我正在将一些测试从Hamcrest转换为AssertJ.在Hamcrest中,我使用以下代码段:
assertThat(list, either(contains(Tags.SWEETS, Tags.HIGH))
.or(contains(Tags.SOUPS, Tags.RED)));
Run Code Online (Sandbox Code Playgroud)
也就是说,列表可以是那个或那个.我如何在AssertJ中表达这一点?该anyOf功能(当然,任何别的东西比任何,但是这将是第二个问题)需要Condition; 我已经实现了这一点,但感觉好像这应该是一个常见的情况.
Joe*_*ola 10
不,这是Hamcrest比AssertJ更好的地方.
写下面的断言:
assertThat(list).satisfiesAnyOf(
listParam -> assertThat(listParam).contains(Tags.SWEETS, Tags.HIGH),
listParam -> assertThat(listParam).contains(Tags.SOUPS, Tags.RED)
);
Run Code Online (Sandbox Code Playgroud)
你需要创建这个条件:
Set<String> goodTags = newLinkedHashSet("Fine", "Good");
Set<String> badTags = newLinkedHashSet("Bad!", "Awful");
Set<String> tags = newLinkedHashSet("Fine", "Good", "Ok", "?");
// contains is statically imported from ContainsCondition
// anyOf succeeds if one of the conditions is met (logical 'or')
assertThat(tags).has(anyOf(contains(goodTags), contains(badTags)));
Run Code Online (Sandbox Code Playgroud)
如果您希望在一个集合中存在标记意味着它们不在另一个集合中,那么它可能不是您的意思.
| 归档时间: |
|
| 查看次数: |
2933 次 |
| 最近记录: |