我有这样的测试:
@Test public void testInfinite() {
if (!testIsTheOnlyTestWhichWillBeRun()) return; ...
我们有一个spring上下文需要一段时间来初始化 - 并且通过上面的测试和hotswapping - 这意味着我可以在几秒钟内调试更改而不是等待重启。
然而,显然将其检入CI系统是一个问题,当然我偶然做了几次。我想知道它是否可能(没有更改testrunner,因为我们已经在使用自定义的,很难修改)以确定它是否是唯一的测试运行。我希望能够说
GetAssetBundle
所以,底线 - 我正在寻找的是,如果我正确地点击那个测试然后在IDE中说运行 - 它会这样做 - 在所有其他情况下 - 例如我右键单击并运行全班 - 或者我是从gradle或CI做的 - 测试什么都不做,只是马上回来。
答案 0 :(得分:1)
您可以评估系统属性:
@Test public void testInfinite() {
if (!"true".equals(System.getProperty("junit.runloop"))) {
return;
}
}
在IDE /本地运行中,您可以使用-Djunit.runloop = true运行测试。
为了不对测试用例本身进行轮询,您可以编写一个执行此操作的JUnit规则:
public class TestInfinite implements TestRule {
@Override
public Statement apply(Statement base, Description description) {
return new Statement() {
public void evaluate() throws Throwable {
do {
base.evaluate();
} while ("true".equals(System.getProperty("junit.runloop")));
}
};
}
}
因此,在您的测试中,您可以附加它们:
public class YourTest {
@Rule public TestInfinite = new TestInfinite();
@Test public void testInfinite() {
// this will be run once if property is not set,
// in an endless loop if it is
}
}