2015-12-19 75 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