文章标题

来源:互联网 发布:简明python教程3.0 编辑:程序博客网 时间:2024/05/29 16:05

JUnit4使用Java5中的注解(annotation),以下是JUnit4常用的几个annotation: 

@Before:初始化方法   对于每一个测试方法都要执行一次(注意与BeforeClass区别,后者是对于所有方法执行一次

@After:释放资源  对于每一个测试方法都要执行一次(注意与AfterClass区别,后者是对于所有方法执行一次

@Test:测试方法,在这里可以测试期望异常和超时时间 

@Test(expected=ArithmeticException.class)检查被测方法是否抛出ArithmeticException异常 

@Ignore:忽略的测试方法 

@BeforeClass:针对所有测试,只执行一次,且必须为static void 

@AfterClass:针对所有测试,只执行一次,且必须为static void 

一个JUnit4的单元测试用例执行顺序为: 

@BeforeClass -> @Before -> @Test -> @After -> @AfterClass; 

每一个测试方法的调用顺序为: 

@Before -> @Test -> @After; 

[java] view plain copy
print?
  1. public class JUnit4Test {     
  2.     @Before    
  3.     public void before() {     
  4.         System.out.println(”@Before”);     
  5.     }     
  6.       
  7.     @Test    
  8.          /**   
  9.           *Mark your test cases with @Test annotations.    
  10.           *You don’t need to prefix your test cases with “test”.   
  11.           *tested class does not need to extend from “TestCase” class.   
  12.           */    
  13.     public void test() {     
  14.         System.out.println(”@Test”);     
  15.         assertEquals(5 + 510);     
  16.     }     
  17.       
  18.     @Ignore    
  19.     @Test    
  20.     public void testIgnore() {     
  21.         System.out.println(”@Ignore”);     
  22.     }     
  23.       
  24.     @Test(timeout = 50)     
  25.     public void testTimeout() {     
  26.         System.out.println(”@Test(timeout = 50)”);     
  27.         assertEquals(5 + 510);     
  28.     }     
  29.       
  30.     @Test(expected = ArithmeticException.class)     
  31.     public void testExpected() {     
  32.         System.out.println(”@Test(expected = Exception.class)”);     
  33.         throw new ArithmeticException();     
  34.     }     
  35.       
  36.     @After    
  37.     public void after() {     
  38.         System.out.println(”@After”);     
  39.     }     
  40.       
  41.     @BeforeClass    
  42.     public static void beforeClass() {     
  43.         System.out.println(”@BeforeClass”);     
  44.     };     
  45.       
  46.     @AfterClass    
  47.     public static void afterClass() {     
  48.         System.out.println(”@AfterClass”);     
  49.     };     
  50. };    
public class JUnit4Test {       @Before      public void before() {           System.out.println("@Before");       }       @Test           /**            *Mark your test cases with @Test annotations.             *You don’t need to prefix your test cases with “test”.            *tested class does not need to extend from “TestCase” class.            */      public void test() {           System.out.println("@Test");           assertEquals(5 + 5, 10);       }       @Ignore      @Test      public void testIgnore() {           System.out.println("@Ignore");       }       @Test(timeout = 50)       public void testTimeout() {           System.out.println("@Test(timeout = 50)");           assertEquals(5 + 5, 10);       }       @Test(expected = ArithmeticException.class)       public void testExpected() {           System.out.println("@Test(expected = Exception.class)");           throw new ArithmeticException();       }       @After      public void after() {           System.out.println("@After");       }       @BeforeClass      public static void beforeClass() {           System.out.println("@BeforeClass");       };       @AfterClass      public static void afterClass() {           System.out.println("@AfterClass");       };   };  

输出结果: 
@BeforeClass 
@Before 
@Test(timeout = 50) 
@After 
@Before 
@Test(expected = Exception.class) 
@After 
@Before 
@Test 
@After 
@AfterClass 













@BeforeClass and @AfterClass@Before and @After在一个类中只可以出现一次

在一个类中可以出现多次,即可以在多个方法的声明前加上这两个Annotaion标签,执行顺序不确定

方法名不做限制 方法名不做限制 在类中只运行一次 在每个测试方法之前或者之后都会运行一次

@BeforeClass父类中标识了该Annotation的方法将会先于当前类中标识了该Annotation的方法执行。
@AfterClass 父类中标识了该Annotation的方法将会在当前类中标识了该Annotation的方法之后执行


@Before父类中标识了该Annotation的方法将会先于当前类中标识了该Annotation的方法执行。
 @After父类中标识了该Annotation的方法将会在当前类中标识了该Annotation的方法之后执行


必须声明为public static
必须声明为public 并且非static


所有标识为@AfterClass的方法都一定会被执行,即使在标识为@BeforeClass的方法抛出异常的的情况下也一样会。
所有标识为@After 的方法都一定会被执行,即使在标识为 @Before 或者 @Test 的方法抛出异常的的情况下也一样会。

原创粉丝点击