在@Before方法中停止JUnit测试而不会失败

时间:2012-05-02 11:50:58

标签: java junit

这些是我的测试用语

class Mother {

    @Before
    public void setUp() {
        if (!this.getClass().isAnnotatedWith("Version20")) { // pseudo code
            /*
             * stop this test without failing!
             */
        }

        // further setup
    }
}


@Version20
class Child extends Mother {

    @Test
    public void test() {
        // run only when Version == 20
    }
}

是否可以在母亲的@Before方法中停止Child中的测试而不会失败或断言(假)?

编辑: 我有更多版本@ Version19,@ Version18等 我的软件正在读取配置文件并输出结果,某些测试仅适用于特殊版本。 我不想在测试方法中进行版本检查,因为我有很多小测试,不喜欢代码重复

1 个答案:

答案 0 :(得分:18)

之前我问过similar question - 结果是您可以使用Assume类'方法根据运行时检查禁用测试(而{ {1}}是静态条件。)

也就是说,如果您总是根据特定的注释禁用它们,那么您似乎并不需要在运行时执行此操作。简单地使用@Ignore以及@Ignore注释类可以完成这项工作,并且可以说更清晰。

虽然我怀疑你可能只是在测试以“1.0模式”运行时忽略 - 在这种情况下它是运行时内省,你可以用以下的东西来做:

@Version20