Java 汉克雷斯特条件匹配器?

Java 汉克雷斯特条件匹配器?,java,hamcrest,Java,Hamcrest,我有一个参数化测试,其中一个参数是布尔值,用来显示测试应该通过还是失败 在我的测试中,我有以下几点: 参数如下所示:{0,1,true} 试验方法包括: 如果(预期结果){ 资产(myList,使用MyCustomMatcher(其他列表)进行匹配); }否则{ 资产(myList,而不是(使用MyCustomMatcher(otherList.subList(开始,结束))匹配); } 我不想做的是写一个if-else语句。因此我的问题是:有条件匹配器吗?例如。: assertThat(m

我有一个参数化测试,其中一个参数是布尔值,用来显示测试应该通过还是失败

在我的测试中,我有以下几点:

参数如下所示:
{0,1,true}

试验方法包括:


如果(预期结果){
资产(myList,使用MyCustomMatcher(其他列表)进行匹配);
}否则{
资产(myList,而不是(使用MyCustomMatcher(otherList.subList(开始,结束))匹配);
}

我不想做的是写一个if-else语句。因此我的问题是:有条件匹配器吗?例如。:
assertThat(myList,ifMatcher(预期,使用mycustommatcher(其他列表))匹配)

正如您可以从源代码中检查到的那样,这并不起作用。您可以按如下方式使用逻辑条件:

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

但我要说的是,我无法想象一个测试,在这个测试中,你不知道标志值是真是假。如果两种情况都可以发生,则必须编写这两个测试。

我不确定是否正确理解您的意思,但是。。。从数学上讲,“如果a那么b”相当于“(而不是a)或b”,那么将
anyOf
not
匹配器结合使用是否有效?在中描述了
条件
类。也许这就是你需要的?@ajb谢谢,我会看看情况的。此外,我还编辑了我的帖子,以使我更清楚地了解我想要实现的目标。
assertThat(myList,  
     either( allOf(is(expectedResult), matchesUsingMyCustomMatcher(otherList)) ) 
     .or( allOf(not(is(expectedResult)), not(matchesUsingMyCustomMatcher(otherList.subList(start, end))) ) ) 
         );