java - 添加 Junit setup/@Before 逻辑而不更改代码?

标签 java ant junit

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

用例:目前有数百个 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/

相关文章:

java - 编写不能太频繁调用的方法的正确方法是什么?

java - 正则表达式从字符串中获取特定值

perl - 我如何运行 Perl 测试并将结果与​​ Ant 中的 JUnit 报告合并?

java - JUnit = 红条,即使我的assertEquals 是正确的

java - 如何在不使用静态 @BeforeClass 的情况下设置/拆卸 dbunit 数据集

java - 如何 JUnit 不可变地测试对象?

java - 无法在 Java 中发送正确的 POST 请求 (Android Studio)

java - Ant Javadoc 任务失败

java - 每次保存后 Eclipse 在构建项目中挂起

java - JUnit 测试的默认工作目录 - 我们如何在 Eclipse 中一致地定义它?