Hamcrest条件匹配器?

时间:2014-12-04 17:22:12

标签: java hamcrest

我有一个参数化测试,其中一个参数是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)));

1 个答案:

答案 0 :(得分:1)

正如您可以从源代码中查看的那样,Condition并没有做到这一点。您可以按如下方式使用逻辑条件:

assertThat(myList,  
     either( allOf(is(expectedResult), matchesUsingMyCustomMatcher(otherList)) ) 
     .or( allOf(not(is(expectedResult)), not(matchesUsingMyCustomMatcher(otherList.subList(start, end))) ) ) 
         );

但是,让我说,我无法想象一个你不知道旗帜值是真还是假的测试。如果两种情况都可能发生,则必须编写两个测试。