我有一个参数化测试,其中一个参数是boolean来显示测试是通过还是失败。
在我的测试中,我有以下内容:
参数如下:{0, 1, true}
测试方法包含:
if (expectedResult) {
assertThat(myList, matchesUsingMyCustomMatcher(otherList));
} else {
assertThat(myList, not(matchesUsingMyCustomMatcher(otherList.subList(start, end))));
}
我不想做的是写一个if-else语句。因此我的问题是:有条件匹配器吗?例如。:
assertThat(myList, ifMatcher(expected, matchesUsingMyCustomMatcher(otherList)));
答案 0 :(得分:1)
正如您可以从源代码中查看的那样,Condition并没有做到这一点。您可以按如下方式使用逻辑条件:
assertThat(myList,
either( allOf(is(expectedResult), matchesUsingMyCustomMatcher(otherList)) )
.or( allOf(not(is(expectedResult)), not(matchesUsingMyCustomMatcher(otherList.subList(start, end))) ) )
);
但是,让我说,我无法想象一个你不知道旗帜值是真还是假的测试。如果两种情况都可能发生,则必须编写两个测试。