在没有更改代码的情况下添加Junit setup / @之前的逻辑?

时间:2015-03-15 01:30:24

标签: java ant junit

我可以通过配置添加要在每个测试用例/套件之前运行的代码,而无需更改代码吗? 有没有办法在一个地方而不是许多文件中为一大套测试添加设置逻辑?

使用案例:数百个Junit测试目前失败。解决方案只是在所有代码之前运行一段代码(或至少与JVM启动的次数一样),以执行一些单例初始化。我想避免现在更改数百个文件,只是以某种方式要求Junit执行给定的init类/方法。 (原因:1)最大限度地减少重复2)我们处于冻结代码状态 - 没有提交回购的提交会优先考虑)

我想我可以扩展TestRunner类,并在那里执行init - 但也许有更好的方法。顺便说一句,该套件是通过Ant运行的,我也看不到通过我自己的testrunner的方法。

1 个答案:

答案 0 :(得分:0)

我有点困惑,因为你说你不想改变代码,但似乎可以写一个自定义测试运行器。这不是说改变测试代码吗?

如果您可以更改测试代码而不是源代码,那么解决此问题的最简单方法是将init方法添加到测试套件类(如果有的话)并使用@BeforeClass

public class MySuite{

    @BeforeClass
    public static void initSingleton(){
            //...
    }
}

此方法将在套件中的任何测试类运行之前运行一次,因此您不应该有很多代码重复,如果您始终运行所有测试,甚至可以将其添加到根套件中。