Junit使用
用于编写和运行可重复的自动化测试的开源测试框架
JUnit4应用便捷、广泛
应用于Java
添加Junit4
1.创建工程,或导入已有工程,按步骤引用Junit4
2.点击Sync Now将修改同步
创建测试类
1.打开待测试文件
public class Calculator{
private static int result; //静态变量,用来存储运行结果
public void add(int n){
result = result + n;
}
public void substract(int n){
restlt = result - 1; //Bug:正确的应该是result = result - n
}
public void multiply(int n){
//此方法尚未写好
}
public void divide(int n){
result = result / n;
}
public int square(int n){
return n * n;
}
public void squareRoot(int n){
for(; ;); //Bug:死循环
}
public void clear(){
result = 0; //将结果清零
}
public int getRestlt(){
return result;
}
}
2.在待测代码空白处右击,选择Go To -> Test
3.点击Create New Test…
4.创建测试用例
setUp():在每个测试开始前执行一次,执行次数与用例个数相等,做一些测试准备工作
tearDown():在每个测试结束后执行一次,执行次数与用例个数相等,做一些测试回收工作
5.选择测试用例保存路径
6.测试类CalculatorTest已经自动生成
@是注解,可以在后面添加(“各种不同情况注释”)
@Test:执行该测试方法
@Ignore:暂时忽略该测试方法
@Before:在所有测试方法之前,不能是static
@After:在所有测试方法之后,不能是static
@BeforeClass:必须是public static void,即公开、静态、无返回。这个方法只会运行一次(Eclipse)
@AfterClass:必须是public static void,即公开、静态、无返回。这个方法只会运行一次(Eclipse)
7.修改测试用例
测试方法必须是public void,即公共、无返回数据。可以抛出异常。
assertEquals():判断实际结果与期望值是否相等,第一个值为期望值,第二个为实际结果
8.在测试用例空白处右击运行
9.用例运行结果
双击失败的用例名,直接定位到报错语句
超时测试
待测试方法:
public void squareRoot(int n){
for(; ;); //Bug:死循环
}
测试用例:
@Test(timeout = 10)
public void testSquareRoot() throws Exception{
calc.add(2);
calc.squareRoot(2);
assertEquals(2, calc.getResult());
}
在@Test(timeout = 10)中设置超时值,单位为毫秒,即测试能够运行的最长时间:如果时间超过,测试就会失败,并抛出异常。
异常测试
待测试方法:
public void divide(int n){
result = result / n;
}
测试用例:
@Test(exception = Exception.class)
public void testDivide() throws Exception{
calc.add(8);
calc.divide(0);
}
在@Test(expected = *.class)中抛出异常,即当除数为0时,该方法抛出异常,则测试通过
参数测试
待测试方法:
public int square(int n){
return n * n;
}
测试用例:
1.为测试方法添加特殊的运行器(@RunWith后面添加运行器)
//指定运行器对整个类进行修饰
@RunWith(Parameterized.class)
public class CalculatorTest1{
2.声明一些变量,来存放期望值,参数等
private int expected = 0;
private int num = 0;
3.声明一个含有参数的构造函数,并初始化之前的变量
public CalculatorTest1(int expected, int num){
this.num = num;
this.expected = expected;
4.声明一个静态的方法,用来准备数据
//数据准备,该方法必须是@Parameters修饰
//该方法必须是public static
//该方法返回Collection集合
//该方法无参数
@Parameters
public static Collection actualData(){
return Arrays.asList(new Object[][]{
{4,2},
{10,3}, //错误
{7,2} //错误
5.编写测试方法,进行测试
@Test
public void testSquare(){
assertEquals(expected, calc.square(num));
}
测试结果