我有一个带有BeforeClass和AfterClass方法的JUnit 4测试套件,可以对以下测试类进行设置/拆卸。 我需要的是也是由他们自己运行测试类,但为此我需要为每个测试类设置/拆解场景(BeforeClass和AfterClass或类似的东西)。问题是,当我运行套件时,我不想在每个测试类之前和之后执行setup / teardown,我只想执行测试套件中的setup / teardown(一次)。 可能吗 ?提前谢谢。
答案 0 :(得分:4)
我不知道使用JUnit做任何标准方法。正如您可能已经知道的那样,它的原因是您的测试用例应该彼此独立运行。这涉及在每种测试方法之前和之后运行的“正常”设置/拆卸方法。虽然我仍然希望独立运行我的测试并远离故障区域,但是类设置和拆卸有点不同。
但是,如果您确实确信自己在做什么,可以使用全局标志来表示是否要运行类setup / teardown,并在类setup / teardown方法中检查其状态。在您的测试套件中,您可以包含一个特殊的类作为第一个,它只执行设置并设置全局标志以指示真正的测试用例不能运行它们的类设置/拆卸方法。类似地,套件中的特殊最后一个类可以执行拆卸代码。需要注意的是,我担心JUnit不能保证套件中测试类的执行顺序,尽管很可能它确实以指定的顺序执行它们 - 但这只是一个实现细节。尝试一下,它可能适合你 - 但不能保证它会一直做你期望的。
答案 1 :(得分:3)
如果您有jUnit 4.7+,我建议您查看名为Rules的新功能(在this blog post中有说明)。它们可能不是您想要的,但它们可能是您使用jUnit获得的最佳效果。
据说TestNG有更好的测试分组可能性,但我自己还没有真正研究过它。
答案 2 :(得分:0)
不,在JUnit中没有标准的方法可以做到这一点,尽管你可以像PéterTörök建议的那样解决问题。
但请注意,在执行此操作时,您或多或少会滥用JUnit。整个单元测试它们彼此独立。这是因为测试之间的依赖关系会造成总维护噩梦(测试失败,因为运行顺序错误)。
所以我建议你强烈考虑是否总是运行设置并不是更好......