如何在 assertj 中验证元素是其中之一
how to verify in assertj that elements are one of
我找不到如何使用 assertj 检查以下内容(这很常见):
假设我有:
result1 = {"AAA", "BBB"}
result2 = {"DDD"}
我想检查结果中的值是否为以下值之一:
String[] valid = String[]{"AAA", "BBB", "CCC"};
使用 assertj,应该是这样的:
assertThat(result1).xxxx(valid);
assertThat(result2).xxxx(valid);
因此 result1 会通过检查,但 result2 不会。
contains() 不起作用(它检查结果是否包含所有有效元素)
我不想为这种检查创建自定义条件
有什么想法吗?
你可以反过来写:
assertThat(valid).contains(result1);
assertThat(valid).contains(result2);
如果你坚持让result在左边,valid在右边,你可以使用:
assertThat(result1).isSubsetOf(Arrays.asList(valid));
assertThat(result2).isSubsetOf(Arrays.asList(valid));
或者,为什么不将 valid 定义为集合,而不是数组?
Set<String> valid = Sets.newHashSet("AAA", "BBB", "CCC"); //Sets comes from google guava
assertThat(result1).isSubsetOf(valid);
assertThat(result2).isSubsetOf(valid);
我找不到如何使用 assertj 检查以下内容(这很常见):
假设我有:
result1 = {"AAA", "BBB"}
result2 = {"DDD"}
我想检查结果中的值是否为以下值之一:
String[] valid = String[]{"AAA", "BBB", "CCC"};
使用 assertj,应该是这样的:
assertThat(result1).xxxx(valid);
assertThat(result2).xxxx(valid);
因此 result1 会通过检查,但 result2 不会。
contains() 不起作用(它检查结果是否包含所有有效元素)
我不想为这种检查创建自定义条件
有什么想法吗?
你可以反过来写:
assertThat(valid).contains(result1);
assertThat(valid).contains(result2);
如果你坚持让result在左边,valid在右边,你可以使用:
assertThat(result1).isSubsetOf(Arrays.asList(valid));
assertThat(result2).isSubsetOf(Arrays.asList(valid));
或者,为什么不将 valid 定义为集合,而不是数组?
Set<String> valid = Sets.newHashSet("AAA", "BBB", "CCC"); //Sets comes from google guava
assertThat(result1).isSubsetOf(valid);
assertThat(result2).isSubsetOf(valid);