我已经构建了一个xquery Testframework,有时我想测试标题和入站,有时候只是标题。
因此我有4个测试用例:
headerAndBody,
headerAndBodyTestsuite,
Header,
HeaderTestsuite
我在目录中搜索数据并从中构建测试程序。
这是错误:
@Test
public void someTest() throws Exception{
if (listHdrInbPayTestSuites.size() > 0) {
assertTrue(buildTest.testHdrInbPay(testSuiteIdentifier));
}
}
列表是 EMPTY!但是JUnit仍然说测试运行了两次。如何解决这个问题呢?这是一个空洞的测试?
编辑:
@Parameter
public String testSuiteIdentifier; (which actually has 2 items)
编辑:(一个Testsuite可以包含多个测试用例,因此我不能只使用另一个参数,因为我想通过Testsuite名称来识别它们。)
临时解决方案: 找到一种解决方法来忽略这些测试:
@Before
public void shouldRunTest() {
Assume.assumeTrue(listHeaderAndBodyTestSuites.size() > 0);
}
我对此解决方案并不满意,因为“跳过测试”的信息可能会产生误导。
任何其他方法/想法?
答案 0 :(得分:0)
JUnit不支持空测试的概念。被忽略的测试是最接近它的概念。
为了不增加测试计数,您必须确保数据值不是参数的一部分。这意味着您必须在@Parameters
方法中删除它们。下面是一个示例,它删除了Parameterized
跑步者文档的Fibonacci测试示例的一些数据值。
@Parameters
public static Iterable<Object[]> data() {
Collection<Object[]> currentData = Arrays.asList(
new Object[][] {
{ 0, 0 },
{ 1, 1 },
{ 2, 1 },
{ 3, 2 },
{ 4, 3 },
{ 5, 5 },
{ 6, 8 }
}
);
return currentData.stream()
.filter( dataSet -> dataSet[1] > 3 )
.collect( Collectors.toList() );
}