上下载最新的junit包。
2 建立名为JunitTest的Java Project,把下载的junit-4.12.jar添加到工程中
3 建立com.abc的package,在该package下建立Calculator.java,用来实现加减乘除运算。
package com.abc;
public class Calculator {
public int add(int a,int b) {
return a + b;
}
public int minus(int a,int b) {
return a - 1; //故意写错,方便测试
}
public int divide(int a,int b) {
return a / b;
}
public int mul(int a,int b) {
return a * b;
}
}
4 创建测试类
(1)右键点击要测试的类Calculator.java,“New”,“JUnit Test Case”
(2)这里有四个方法可选
setUpBeforeClass()和setUp()是用于测试之前的准备工作。区别在于setUpBeforeClass()是针对整个类的,只执行一次;setUp()是针对方法的,每个测试方法被执行之前都会先执行setUp()。
tearDownAfterClass()和tearDown()是用于测试之后释放资源的。区别在于tearDownAfterClass()是针对整个类的,只执行一次;tearDown()是针对方法的,每个测试方法被执行后都会执行tearDown()。
这里勾选setUpBeforClass()。
(3)这里可以选择要测试的方法。把四个运算方法都选上。
(4)点击finish后生成的代码如下图所示
(5)编写测试类代码
package com.abc;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
public class CalculatorTest {
Calculator cal;
@Before
public void setUp()throws Exception{
cal = new Calculator();
}
@Test
public void testAdd() {
int res = cal.add(20, 10);
assertEquals("加法错误",res, 30);
}
@Test
public void testMinus() {
int res = cal.minus(20, 10);
assertEquals("减法错误",res, 10);
}
@Test
public void testDivide() {
int res = cal.divide(20, 10);
assertEquals("除法错误",res, 2);
res =cal.divide(20, 0);
}
@Test
public void testMul() {
int res = cal.mul(20, 10);
assertEquals("乘法错误",res, 200);
}
}
5 开始测试
右键点击CalculatorTest,“Run As”,“JUnitTest”,报initializationError的错误
这个错误是因为少了junit-4.12.jar的两个依赖包:hamcrest-core-1.3.rc2.jar和hamcrest-library-1.3.rc2.jar。
从网络上下载这两个包并添加到工程中:
重新进行单元测试,结果如下:
上述结果显示了两个方法是正确的,一个方法是计算结果错误,另一个方法是编译错误。
点击testMinus,可以查看错误信息为计算结果应该为10却计算成了19。
点击testDivide,可以看到错误信息为除数不能为0。