【发布时间】:2016-03-14 18:32:55
【问题描述】:
为什么这个测试失败了?当您传入以逗号分隔的单个字符串时,我知道 contains 有效,但我想看看是否可以只传入整个字符串列表。我只是想确保列表 1 包含列表 2 的所有内容。
@Test
public void testContains() {
String expected1 = "hello";
String expected2 = "goodbye";
List<String> expectedStrings = new ArrayList<>();
expectedStrings.add(expected1);
expectedStrings.add(expected2);
List<String> actualStrings = new ArrayList<>();
actualStrings.add(expected1);
actualStrings.add(expected2);
assertThat(actualStrings, contains(expectedStrings));
}
使用此断言是否可以接受?
assertThat(actualStrings, is(expectedStrings));
【问题讨论】:
-
containsAll 而不是包含。检查API
-
@RahulSharma 所以你会像
assertThat(actualStrings.containsAll(expectedStrings), is(true))一样使用它? -
@RahulSharma 我正在寻找更多类似于 List 方法
containsAll的 hamcrest 匹配器,所以我可以这样做:assertThat(actualStrings, containsAll(expectedStrings))。我认为它比is(true)匹配器读起来更好。 -
我真的不知道如何用 hamcrest 做到这一点。我在测试中使用 JUnit 断言。 JUnit 具有大部分 hamcrest 功能,如果在您的情况下使用 hamcrest 不是强制性的,我建议使用 JUnit。
-
@RahulSharma 好的,那么在这种情况下,您的 JUnit 断言会是什么样子?