如何在assertj中验证元素是否是其中之一

时间:2015-12-19 13:33:19

标签: assertj

我无法找到如何检查断言以下(这是非常常见的):

假设我有:

 result1 = {"AAA", "BBB"}
 result2 = {"DDD"}

我想检查结果中的值是否为以下之一:

String[] valid = String[]{"AAA", "BBB", "CCC"};

使用assertj,可能是:

assertThat(result1).xxxx(valid);
assertThat(result2).xxxx(valid);

因此result1将通过检查,但result2不会。

contains()不起作用(它检查结果是否包含所有有效元素)

我不想为这种检查创建自定义条件

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

你可以反过来说:

assertThat(valid).contains(result1);
assertThat(valid).contains(result2);

如果您坚持左侧是结果而右侧是有效,您可以使用:

assertThat(result1).isSubsetOf(Arrays.asList(valid));
assertThat(result2).isSubsetOf(Arrays.asList(valid));

或者,为什么不将有效定义为集合而不是数组?

Set<String> valid = Sets.newHashSet("AAA", "BBB", "CCC"); //Sets comes from google guava
assertThat(result1).isSubsetOf(valid);
assertThat(result2).isSubsetOf(valid);