JUnit4 @BeforeClass @AfterClass 与@Before @After 区别

原创 2015年07月07日 13:07:34


在 JUnit 4 中加入了两个注解:@BeforeClass 和@AfterClass,使用这两个注解的方法,在一个Test 类的所有测试方法执行前后各执行一次。这是为了能在@BeforeClass 中初始化一些昂贵的资源,例如数据库连接,然后执行所有的测试方法,最后在@AfterClass 中释放资源。


@BeforeClass \ @AfterClass

@Before \ @After

在一个类中只可以出现一次 在一个类中可以出现多次,执行顺序@Before是从下往上执行,@After是从上往下执行(可以写个Test类测试下)
方法名不做限制
方法名不做限制
在类中只运行一次 在每个测试方法之前或者之后都会运行一次
@BeforeClass 父类中标识了该注解的方法将会先于当前类
中标识了该注解的方法执行。
@AfterClass 父类中标识了该注解的方法将会在当前类中
标识了该注解的方法之后执行
@Before 父类中标识了该注解的方法将会先于当前类中
标识了该注解的方法执行。
@After 父类中标识了该注解的方法将会在当前类中标
识了该注解的方法之后执行
必须声明为public static void
必须声明为public 并且非static void
所有标识为@AfterClass 的方法都一定会被执行,即使在标
识为@BeforeClass 的方法抛出异常的的情况下也一样会
所有标识为@After 的方法都一定会被执行,即使在标识为
@Before 或者 @Test 的方法抛出异常的的情况下也一样会

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

@Test
:测试方法,在这里可以测试期望异常和超时时间 
@Test(expected=ArithmeticException.class)
检查被测方法是否抛出ArithmeticException异常 
@Ignore
:忽略的测试方法 

一个JUnit4的单元测试用例执行顺序为: 
@BeforeClass -> @Before -> @Test -> @After -> @AfterClass; 
每一个测试方法的调用顺序为: 

@Before -> @Test ->@After;

以下是测试执行顺序代码:

[java]
public class CalculatorTest {  
  
    private static Calculator calculator = new Calculator();  
  
    @BeforeClass  
    public static void beforeClass1(){  
        System.out.println("@beforeClass1");  
    }  
    @BeforeClass  
    public static void beforeClass2(){  
        System.out.println("@beforeClass2");  
    }  
      
    @Before  
    public void before1() throws Exception {  
        System.out.println("@before1");  
    }  
      
    @Before  
    public void before2() throws Exception {  
        System.out.println("@before2");  
    }  
  
    @Test  
    public void testAdd() {  
        System.out.println(1);  
    }  
  
    @Test  
    public void testSubstract() {  
        System.out.println(2);  
    }  
  
    @Ignore("Multiply() Not yet implemented")  
    @Test  
    public void testMultiply() {  
        System.out.println(3);  
        fail("Not yet implemented");  
    }  
  
    @Test  
    public void testDivide() {  
        System.out.println(4);  
    }  
  
    @Test(timeout = 1000)  
    public void testSquareRoot() {  
        System.out.println(5);  
    }  
  
    @Test  
    //@Test(expected = ArithmeticException.class)  
    public void divideByZero() {  
        System.out.println(6);  
    }  
      
    @After  
    public void after1(){  
        System.out.println("@after1");  
    }  
    @After  
    public void after2(){  
        System.out.println("@after2");  
    }  
    @AfterClass  
    public static void afterClass1(){  
        System.out.println("@afterClass1");  
    }  
    @AfterClass  
    public static void afterClass2(){  
        System.out.println("@afterClass2");  
    }  
}  



执行结果: @beforeClass2
@beforeClass1
@before2
@before1
1
@after1
@after2
@before2
@before1
2
@after1
@after2
@before2
@before1
4
@after1
@after2
@before2
@before1
5
@after1
@after2
@before2
@before1
6
@after1
@after2
@afterClass1
@afterClass2


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

JUnit4 中@AfterClass @BeforeClass @after @before的区别对比

JUnit4使用Java5中的注解(annotation),以下是JUnit4常用的几个annotation:  @Before:初始化方法   对于每一个测试方法都要执行一次(注意与BeforeC...

JUnit4 中@AfterClass @BeforeClass @after @before的区别对比

JUnit4使用Java5中的注解(annotation),以下是JUnit4常用的几个annotation:  @Before:初始化方法   对于每一个测试方法都要执行一次(注意与BeforeCl...

JUnit4 中@AfterClass @BeforeClass @after @before的区别对比

JUnit4使用Java5中的注解(annotation),以下是JUnit4常用的几个annotation:  @Before:初始化方法   对于每一个测试方法都要执行一次(注意与BeforeC...

JUnit4 中@AfterClass @BeforeClass @after @before的区别对比

@BeforeClass and @AfterClass @Before and @After 在一个类中只可以出现一次在一个类中可以出现多次,即可以在多个方法的声明前加上这两个Annotaion标签...

JUnit4 中@AfterClass @BeforeClass @after @before的区别对比

JUnit4使用Java5中的注解(annotation),以下是JUnit4常用的几个annotation:  @Before:初始化方法   对于每一个测试方法都要执行一次(注意与BeforeC...

JUnit4 中@AfterClass @BeforeClass @after @before的区别对比

JUnit4使用Java5中的注解(annotation),以下是JUnit4常用的几个annotation:  @Before:初始化方法   对于每一个测试方法都要执行一次(注意与BeforeC...

JUnit4 中@AfterClass @BeforeClass @after @before的区别对比

JUnit4使用Java5中的注解(annotation),以下是JUnit4常用的几个annotation:  @Before:初始化方法   对于每一个测试方法都要执行一次(注意与BeforeC...
  • Hnkuo
  • Hnkuo
  • 2016-04-29 16:25
  • 168

JUnit4 中@AfterClass @BeforeClass @after @before的区别对比

JUnit4使用Java5中的注解(annotation),以下是JUnit4常用的几个annotation:  @Before:初始化方法   对于每一个测试方法都要执行一次(注意与BeforeC...

Junit4的使用(@Test @Before @After @BeforeClass @AfterClass @Ignore)

@BeforeClass:类前执行,针对所有测试,只执行一次,且必须为static void。 @Before:方法前执行,多个Test方法时执行多次。非静态。 @Test:测试方法,在这...

关于 junit4 中的 @Before @After @BeforeClass @AfterClass @Ignore 和 timeout expected 的使用

学习了junit4 测试框架后,领略了这个优秀框架的短小精悍,并对@Before @After @BeforeClass @AfterClass  @Ignore 和 timeout  expecte...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)