可能重复:
有条件地忽略JUnit 4中的测试
我有一套与Parameterized跑步者一起运行的系统测试,我想在不同的环境中运行.有些测试只能在非生产环境中运行,而且在生产中运行时我希望看到它们被忽略,所以我正在寻找一种说法:
@Test
public void dangerousTest() {
if (isProduction(environment)) ignore(); // JUnit doesn't provide ignore()
environment.launchMissilesAt(target);
assertThat(target, is(destroyed()));
}
Run Code Online (Sandbox Code Playgroud)
问题是JUnit没有提供ignore()在运行时忽略测试用例的方法.此外,Assume.assumeTrue(isNotProduction(environment))似乎不适用于Parameterized跑步者 - 它只是将测试标记为已通过,而不是被忽略.任何想法如何通过以下约束实现等效:
Parameterized跑步者你可以随时做
if (isProduction(environment)) return;
Run Code Online (Sandbox Code Playgroud)
测试将标记为已通过,但至少不会发射导弹.
或者您可以使用我从未使用过的Assume,但是以这种方式记录:
一组方法,用于说明关于测试有意义的条件的假设.失败的假设并不意味着代码被破坏,而是测试没有提供有用的信息.默认的JUnit运行器将失败假设的测试视为忽略.自定义跑步者可能表现不同.例如:
你的代码看起来像这样:
@Test
public void dangerousTest() {
assumeTrue(!isProduction(environment));
// ...
}
Run Code Online (Sandbox Code Playgroud)