一尘不染

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

java

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

例如:

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

我想确保每次运行test1()test2()都运行MyTest,但是找不到类似的注释@Test(order=xx)

我认为对于JUnit来说这是非常重要的功能,如果JUnit的作者不希望使用订单功能,为什么呢?


阅读 550

收藏
2020-02-28

共1个答案

一尘不染

我认为这对于JUnit来说是非常重要的功能,如果JUnit的作者不希望使用订购功能,为什么呢?

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

如何使用测试治具?
(…)测试方法调用的顺序不能保证,因此testOneItemCollection()可能在testEmptyCollection()之前执行。(...)

为什么会这样呢?好吧,我相信使测试顺序依存性是作者不希望提倡的做法。测试应该是独立的,他们不应该被耦合,并且违反本将让事情变得难以维持,将打破单独(明显),运行等测试的能力

话虽如此,如果你真的想朝这个方向发展,请考虑使用TestNG,因为它支持以本机任意顺序运行测试方法(以及指定方法取决于方法组的事情)。Cedric Beust解释了如何按照testng中的测试执行顺序执行此操作。

2020-02-28