我可以通过配置添加要在每个测试用例/套件之前运行的代码,而不更改代码吗? 有没有办法在一个地方而不是多个文件中添加大量测试的设置逻辑?
用例:目前有数百个 Junit 测试失败。一个解决方案是简单地在所有代码之前运行一段代码(或者至少与 JVM 启动的次数一样多),以执行一些单例初始化。我现在想避免更改数百个文件,只是以某种方式要求 Junit 执行给定的 init 类/方法。 (原因:1)最大限度地减少重复 2)我们处于某种代码卡住状态 - 最好不要提交存储库)
我想我可以扩展 TestRunner 类,并在那里进行初始化 - 但也许有更好的方法。顺便说一句,该套件是通过 Ant 运行的,我也看不到传递我自己的测试运行程序的方法。
最佳答案
我有点困惑,因为你说你不想更改代码,但编写自定义测试运行程序似乎没问题。这不是意味着要更改测试代码吗?
如果您可以更改测试代码但不能更改源代码,那么解决此问题的最简单方法是将 init 方法添加到您的测试套件类(如果有的话)并使用 @BeforeClass
注释它们
public class MySuite{
@BeforeClass
public static void initSingleton(){
//...
}
}
此方法将在套件中的任何测试类运行之前运行一次,因此您不应该有太多代码重复,如果您始终运行所有测试,甚至可以将其添加到根套件中。
关于java - 添加 Junit setup/@Before 逻辑而不更改代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29056274/