如何在JUnit4中以特定的顺序运行测试方法?

问题:

我想以特定的顺序执行由@Test注释的测试方法。
例如:

public class MyTest {
    @Test public void test1(){}
    @Test public void test2(){}
}

每次运行MyTest时,我想确保在test2()之前运行test1(),但是我找不到像@Test(order=xx)的注释
我认为JUnit是非常重要的功能,如果JUnit的作者不想要订单功能,为什么?

回答:

我认为JUnit是非常重要的功能,如果JUnit的作者不想要订单功能,为什么?

我不知道有没有一个干净的方法来做这个JUnit,据我所知,JUnit假定所有的测试都可以按任意顺序执行。从常见问题解答:

如何使用测试夹具?

(…)测试方法调用的顺序为不保证,因此testOneItemCollection()可能在testEmptyCollection()之前执行。 (……)

为什么会这样?那么,我认为,测试order dependent是作者不想推广的做法。测试应该是独立的,它们不应该被耦合,违反这个使事情更难维护,会破坏单独运行测试的能力(显然)等。
话虽如此,如果你真的想走这个方向,考虑使用TestNG,因为它支持以任意顺序的方式运行测试方法(和指定方法依赖于一组方法)。 Cedric Beust解释了如何在order of execution of tests in testng

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: How to run test methods in specific order in JUnit4?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

41 − 38 =