2015-12-19 39 views
2

一个我无法找到如何做assertj以下(这是很常见的)检查:如何assertj验证元素的

假设我有:

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

我想检查结果中的值就是其中之一:使用assertj

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

,是对子级的东西:

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

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

包括()不工作(它会检查结果中包含所有有效元素)

我不想不得不为这种检查

任何想法的创建自定义条件?

回答

3

您可以wtite它周围的其他方法:

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); 
+1

我同意,看到http://joel-costigliola.github.io/assertj/core-8/api/org/assertj/core/api/AbstractIterableAssert.html#isSubsetOf-java.lang.Iterable- 缺少的是在isSubsetOf中传递数组/可变参数的可能性,我为此创建了一个问题(https://github.com/joel-costigliola/assertj-core/issues/548) –

+0

优秀的响应,谢谢 – ejaenv