JUnit4学习
junit3的要求
1.单元测试类必须继承自TestCase
2.要测试的方法必须以test开头
junit4无需做上述操作,他引入了一系列注解代替
1. @Before:使用了该元数据的方法在每个测试方法执行之前都要执行一次。 相当于之前的setUp
2. @After:使用了该元数据的方法在每个测试方法执行之后要执行一次。相当于之前的setDown
@Before,@After标识的方法只能各有一个。
3.@Test(expected=*.class):捕获异常,expected属性的值是一个异常的类型
4.@Test(timeout=xxx):该元数据传入了一个时间(毫秒)给测试方法,如果测试方法在制定的时间内没有运行完,则测试失败,一般用于死循环,或是嵌套循环
5.@ignore:如果测试的方法还没有实现,或者测试的方法已经过时,或者不想测试该方法,可以使用该标签来标识测试方法。测试的时候会显示该方法被忽略,不会报错
以下为实例,先创建一个需要测试的方法
public class Calculator ...{
private static int result; // 静态变量,用于存储运行结果
public void add(int n) ...{
result = result + n;
}
public void substract(int n) ...{
result = result - 1; //Bug: 正确的应该是 result =result-n
}
public void multiply(int n) ...{
} // 此方法尚未写好
public void divide(int n) ...{
result = result / n;
}
public void square(int n) ...{
result = n * n;
}
public void squareRoot(int n) ...{
for (; ;) ; //Bug : 死循环
}
public void clear() ...{ // 将结果清零
result = 0;
}
public int getResult() ...{
return result;
}
}
新建一个junit text case
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
public class CalculatorTest {
//实例化需要测试的类,创建Calculator对象
private static Calculator calculator = new Calculator();
@Before
public void setUp() throws Exception {
calculator.clear();
}
@Test
//使用注解的方法,可以取任何名字,但是有要求,1.返回类型必须为void;2.无参数
public void testAdd() {
calculator.add(2);
calculator.add(3);
//因为Assert里面的方法都是静态(static)方法,所以可以忽略前面的类名
assertEquals(5, calculator.getResult());
}
@Test
public void testSubstract() {
calculator.add(10);
calculator.substract(2);
assertEquals(8, calculator.getResult());
}
@Ignore("Multiply() Not yet implemented")
@Test
public void testMultiply() {
}
@Test
public void testDivide() {
calculator.add(8);
calculator.divide(2);
assertEquals(4, calculator.getResult());
}
}

浙公网安备 33010602011771号