我如何指定JUnittesting依赖关系?
我们的工具包有超过15000个JUnittesting,如果其他一些testing失败,很多testing都会失败。 例如,如果方法X.foo()使用Y.bar()中的function并且YTest.testBar()失败,那么XTest.testFoo()也会失败。 显然,XTest.testFoo()也可能因为X.foo()特有的问题而失败。
虽然这很好,我仍然希望两个testing都运行,但如果用XTest.testFoo()指向YTest.testBar()来注释一个testing依赖项,那将会很好。 这样,可以立即看到X.foo()使用的function也失败了,什么不是。
JUnit或其他地方有这样的注释吗? 就像是:
public XTest { @Test @DependsOn(method=org.example.tests.YTest#testBar) public void testFoo() { // Assert.something(); } }
JExample和TestNG有类似的东西。
我不知道它有多有用,但是如果你尝试了,请回来告诉我们它是否有用。
对JUnit有一个解释: https : //github.com/junit-team/junit.contrib/tree/master/assumes
您可以在TestNG中声明testing依赖关系 ,其语法几乎与您的示例相同。 我不认为JUnit提供了类似的东西。
org.junit.FixMethodOrder
@FixMethodOrder(MethodSorters.NAME_ASCENDING)这是你的unit testing类的顶部。
你可以命名你的方法public void step1_methodName等
在行为驱动devise库jBehave中有一个关键字GivenScenarios
,它导入在主场景之前运行的场景列表。 这给定义依赖关系并有一个失败点的机会。 jBehave的日志会告诉你,如果testing在依赖关系或主体部分失败。
真的没有我知道的这样的事情。 (编辑:你每天都会学到新东西:))在我看来,这并不是什么坏事(尽pipe我可以看到它是有用的,尤其是当JUnit被用于其他forms的自动化testing时 – 例如,集成testing)。 你的testing,国际海事组织,并没有在“unit testing”这个词的最严格的意义上(至less不是X#foo()
的testing)。 X#foo()
testing应该成功或失败, 只取决于X#foo()
。 它不应该依赖Y#foo()
。
我所要做的就是嘲笑Y,用非常简单的控制行为来实现像MockY#foo()
这样的东西,并在X#foo()
的testing中使用它。
这就是说,通过15000个testing,我可以看到这将是一个重构的痛苦。 🙂