小编典典

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

all

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

例如:

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

我想确保在每次运行test1()之前运行,但我找不到像.test2()``MyTest``@Test(order=xx)

我认为这对 JUnit 来说是非常重要的特性,如果 JUnit 的作者不想要 order 特性 ,为什么?


阅读 84

收藏
2022-03-16

共1个答案

小编典典

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

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

如何使用测试夹具?

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

为什么会这样?好吧,我相信让测试 顺序依赖 是作者不想推广的一种做法。测试应该是独立的,它们不应该耦合,违反这一点 会使
事情更难维护,会破坏单独运行测试的能力(显然)等等。

话虽这么说,如果您真的想朝这个方向发展,请考虑使用 TestNG,因为它支持以任意顺序运行测试方法(例如指定方法取决于方法组)

2022-03-16