JUNIT4 笔记 测试用例

原文:http://mwhgjava.iteye.com/blog/774681

测试用例需要用@Test注释标识。
@Test 位于一个方法前,标识该方法是一个测试用例。该方法必须是一个公有无参数无返回值的实例方法(public | void | no parameters | not static)。

Java代码 复制代码  收藏代码
  1. @Test public void testAdd(){   
  2.         assertEquals(5,2+3);   
  3.     }  
@Test public void testAdd(){
		assertEquals(5,2+3);
	}


@Test @interface定义了timeout方法和expected方法。

@Test (timeout=?)  其中“?”为long型数字,单位是毫秒。表示如果用例执行时间超过该时间,即断言用例失败。

Java代码 复制代码  收藏代码
  1. @Test (timeout=5000)  
@Test (timeout=5000)


@Test (expected=?)  其中“?”为java.lang.Throwable及其子类。表示该用例期望抛出一个Throwable,如果执行过程中抛出了期望的Throwable,则断言成功,否则断言失败。

Java代码 复制代码  收藏代码
  1. @Test (expected=Throwable.class)    
  2. @Test (expected= NullPointerException.class)   
@Test (expected=Throwable.class) 
@Test (expected= NullPointerException.class) 


测试用例断言失败,即宣告测试用例执行结束。

JUnit4为每一个测试用例创建一个测试类实例。

Java代码 复制代码  收藏代码
  1. public class MyTestcase {   
  2.     public MyTestcase(){   
  3.         System.out.println("new Instance");   
  4.     }   
  5.     @Test public void test1() {   
  6.         System.out.println("@test1");   
  7.         assertTrue(true);   
  8.     }   
  9.     @Test public void test2(){   
  10.     System.out.println("@test2");   
  11.         assertEquals(5,2+3);   
  12.     }   
  13. }  
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);
	}
}


代码执行会打印下列结果:


    new Instance
    @test1
    new Instance
    @test2


JUnit4规范要求,不同测试用例不共享实例变量,也不假想类中测试用例有固定的执行顺序。测试用例的执行顺序,由测试运行器的调用顺序决定,不同测试运行器执行顺序不同,同一测试运行器的调用顺序也可能不同(比如,多线程测试运行器)。

 

你可能感兴趣的:(java,多线程,Blog,ITeye)