原文:http://mwhgjava.iteye.com/blog/774681
测试用例需要用@Test注释标识。
@Test 位于一个方法前,标识该方法是一个测试用例。该方法必须是一个公有无参数无返回值的实例方法(public | void | no parameters | not static)。
@Test public void testAdd(){ assertEquals(5,2+3); }
@Test @interface定义了timeout方法和expected方法。
@Test (timeout=?) 其中“?”为long型数字,单位是毫秒。表示如果用例执行时间超过该时间,即断言用例失败。
@Test (timeout=5000)
@Test (expected=?) 其中“?”为java.lang.Throwable及其子类。表示该用例期望抛出一个Throwable,如果执行过程中抛出了期望的Throwable,则断言成功,否则断言失败。
@Test (expected=Throwable.class) @Test (expected= NullPointerException.class)
测试用例断言失败,即宣告测试用例执行结束。
JUnit4为每一个测试用例创建一个测试类实例。
public class MyTestcase { public MyTestcase(){ System.out.println("new Instance"); } @Test public void test1() { System.out.println("@test1"); assertTrue(true); } @Test public void test2(){ System.out.println("@test2"); assertEquals(5,2+3); } }
代码执行会打印下列结果:
JUnit4规范要求,不同测试用例不共享实例变量,也不假想类中测试用例有固定的执行顺序。测试用例的执行顺序,由测试运行器的调用顺序决定,不同测试运行器执行顺序不同,同一测试运行器的调用顺序也可能不同(比如,多线程测试运行器)。