junit中before和beforeclass,多个test执行顺序

来源:互联网 发布:电脑防护软件2016 编辑:程序博客网 时间:2024/05/16 15:39
1.区别

@before

在每个测试方法之前都会运行一次,只需声明成public

@beforeclass

在类中只运行一次,必须声明成public static

同理,@after  和@afterclass

2.执行次数

@before,@beforeclass不止运行一次,每次测试用例运行之前都运行一次;

@after  和@afterclass运行一次,在所有用例运行之后。

3.多个test执行顺序

按照设计,Junit不指定test方法的执行顺序。

到目前为止,这些test方法仍是简单地根据反射API返回的顺序来执行。

但是,由于Java平台并不能指定明确的顺序,因此使用JVM来决定test方法的顺序是不明智的。

而事实上,JDK7会返回一个随机的顺序。

当然,编写完善的测试代码并不需要假定任何执行顺序,但是另一些需要,而且在一些特定平台上一个可预测的错误总比随机错误要好。

从4.11版本开始,JUnit将会默认使用一个可确定,但是不可预测的顺序(MethodSorters.DEFAULT)。

如果你想要改变test的执行顺序,那么你可以简单的在test类上加以个注解@FixMethodOrder 并且指定一个合适的MethodSorters

@FixMethodOrder(MethodSorters.JVM) : 根据JVM返回的顺序来决定test方法的执行顺序。每次测试这个顺序可能都不一样

@FixMethodOrder(MethodSorters.NAME_ASCENDING) : 根据test方法名按照字典顺序升序排序

注:1、Junit4.11版本及以后才支持 2、使用Junit,需要有配合的hamcrest包


0 0
原创粉丝点击