JUnit - 指定测试对其他测试的依赖关系(不跳过任何一个)?

2022-08-31 16:28:06

我们的工具包有超过 15000 个 JUnit 测试,如果其他测试失败,许多测试都会失败。例如,如果方法X.foo()使用 Y.bar()中的功能,而YTest.testBar()失败,那么XTest.testFoo()也将失败。显然,XTest.testFoo() 也可能因为 X.foo() 特有的问题而失败。

虽然这很好,我仍然希望两个测试都运行,但如果可以用指向YTest.testBar()的XTest.testFoo()来注释测试依赖关系,那就太好了。通过这种方式,人们可以立即看到X.foo()使用的哪些功能也失败了,什么没有。

在 JUnit 或其他地方是否有这样的注释?像这样:

public XTest {

  @Test
  @DependsOn(method=org.example.tests.YTest#testBar)
  public void testFoo() {
     // Assert.something();
  }

}

答案 1

JUnit还不能(在撰写本文时,2022年)。

但是JExampleTestNG都有类似的东西。

  • 所述库提供自己的测试运行程序,该运行程序支持其依赖机制。
  • 两者都可以与JUnit一起使用(无需重写现有类)。
  • 但TestNG似乎更有前途。

我不知道它有多大用处,但如果你尝试一下,请回来告诉我们它是否有用。


答案 2

JUnit有一个贡献可以解决这个问题:https://github.com/junit-team/junit.contrib/tree/master/assumes

更新2022;假设现在已经出来了,但这只会跳过测试,这不是OP所要求的。


推荐