<p id="main-toc"><strong>目录</strong></p>
讯享网
1. JUnit4.x 测试用例相关的注解
1.1 @Before
1.2 @After
1.3 @BeforeClass
1.4 @AfterClass
1.5 @Test(timeout = xxx)
1.6 @Test(expected = Exception.class)
1.7 @Ignore
2. 打包测试Suite相关的注解
2.1 @RunWith(Suite.class)
2.2 @Suite.SuiteClasses(...{xx.calss, xx.calss, ...})
2.3 示例
3. 参数化测试相关的注解
3.1 @RunWith(Parameterized.class)
3.2 @Parameters
3.3 示例
4. 控制用例执行顺序相关的注解
4.1 @FixMethodOrder注解
4.2 示例
5. 自定义规则Rule相关的注解
5.1 @Rule和@ClassRule
5.2 JUnit提供了以下几个Rule实现,必要时也可以自己实现Rule
5.3 示例
1.1 @Before
与junit3.x中的setUp()方法功能一样,在每个测试方法之前执行。
1.2 @After
与tearDown()方法一样。
1.3 @BeforeClass
在所有方法执行之前执行
1.4 @AfterClass
在所有方法执行之后执行
1.5 @Test(timeout = xxx)
设置当前测试方法在一定时间内运行完,否则返回错误
1.6 @Test(expected = Exception.class)
设置被测试的方法是否有异常抛出。抛出异常类型为: Exception.class
1.7 @Ignore
注释掉一个测试方法或者一个类,被注释的方法或类,不会被执行。
补充:
JUnite4的执行顺序:@BeforeClass > @Before > @Test1 > @After > @Before > @Test2 > @After …… > @AfterClass
2.1 @RunWith(Suite.class)
需要一个特殊的Runner, 因此需要向@RunWith注解传递一个参数Suite.calss。
2.2 @Suite.SuiteClasses(…{xx.class, xx.class, …})
用来表明这个类是一个打包测试类,把需要打包的类作为参数传递给该注解即可。
小结:
有了这两个注解之后,就已经完整的表达了所有的含义,因此下面的类无关紧要,随便起个类名,内容为空。
2.3 示例

3.1 @RunWith(Parameterized.class)
首先要为这种测试专门生成一个新的类,而不能与其他测试共用同一个类。
这里不使用默认的Runner了,使用带有参数化功能的Runner。
@RunWith(Parameterized.class)这条语句就是为这个类指定了ParameterizedRunner。
3.2 @Parameters
放在方法上。
定义一个待测试的类,并且定义两个变量,一个用于存放参数,一个用于存放期待的结果。
定义测试数据的结合,就是下方的prepareData()方法,该方法可以任意命名,但是必须使用@Parameters标注进行修饰。
这里需要注意:其中的数据是一个二维数组,数据两两一组,每组中的这两个数据,一个是参数,一个是预期的结果。比如第一组{2,4}中:2是参数,4是预期结果。这两数据顺序无所谓。
然后,是构造函数,其功能就是对先前定义的两个参数进行初始化。这里要注意参数的顺序,要和上面的数据集合的顺序保持一致。(比如都是先参数后结果)
3.3 示例
讯享网
4.1 @FixMethodOrder注解
(1)控制测试方法的执行顺序的。
(2)该注解的参数是org.junit.runners.MethodSorters对象。
(3)枚举类org.junit.runners.MethodSorters中定义三种顺序类型:
MethodSorters.JVM:按照JVM得到的方法顺序,即代码中定义的方法顺序。
MethodSorters.DEFAULT:默认的顺序,以确定但不可预期的顺序执行。
MethodSorters.NAME_ASCENDING:按方法名字母顺序执行。
4.2 示例

5.1 @Rule和@ClassRule
(1) 什么是Rule实现
Rule是一组实现了TestRule接口的共享类,提供了验证,监视TestCase和外部资源管理等能力。
即,提供了测试用例执行过程中一些通用功能的共享能力,使不必重复编写一些功能类似的代码。
(2)JUnit4中包含两个注解:@Rule和@ClassRule
用于修饰Field或返回Rule的Method。
两者作用域不同:
@Rule的作用域是测试方法。
@ClassRule则是测试Class。
5.2 JUnit提供了以下几个Rule实现,必要时也可以自己实现Rule
(1)Verifier:验证测试执行结果的正确性。
(2)ErrorCollector:收集测试方法中出现的错误信息,测试不会中断,如果有错误发生,测试结束后会标记失败。
(3)ExpectedException:提供灵活的异常验证功能。
(4)Timeout:用于测试超时的Rule。
(5)ExternalResource:外部资源管理。
(6)TemporaryFolder:在JUnit的测试执行前后,创建和删除新的临时目录。
(6)TestWatcher:监视测试方法生命周期的各个阶段。
(7)TestName:在测试方法执行过程中提供获取测试名字的能力。
5.3 示例
讯享网


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/168568.html