我的具体问题是关于JUnit的Parameterized Tests,过滤(基本上没有运行)测试,如果它包含某个属性。例如:
onLoadFinished
问题是,是否存在一种技术,其中约束@Test
public void test1() {
if (property.contains("example")) {
return;
}
assertEquals(expected, methodToTest1(actual));
}
@Test
public void test2() {
if (property.contains("example")) {
return;
}
assertEquals(expected, methodToTest2(actual));
}
在其他地方静态定义,而不是在每个测试方法之前?像这样:
if (property.equals("example"))...
答案 0 :(得分:5)
您可以将JUnit的Assume feature与@Before
一起使用。
将@Before
方法添加到测试类
@Before
public void dontRunIfExample() {
assumeFalse(property.contains("example"));
}
并从每个测试中移除if
块。
答案 1 :(得分:0)
这取决于您运行JUnit测试的方式。你可以完全使用Java的System.getProperty("conditionForTest")
。然后,如果您通过命令行启动它们,则需要使用-DconditionForTest=true
指定它们,或者如果您使用ant运行测试,则可以将其传递到目标。
<sysproperty key="conditionForTest" value="true"/>