列表的 Hamcrest 匹配器<Set<String>>
Hamcrest matchers for a List<Set<String>>
我正在尝试为 returns
的方法编写 JUnit 测试
List<Set<String>> result = build(List<Account> accounts, List<Order> orders);
我可以用
检查我是否有预期的条目数
assertThat(result, hasSize(2));
但我正在努力寻找关于如何编写断言的明确文档,该断言列表包含一个集合大小为 2 的条目和一个集合大小为 4 的条目。如果有人可以指出相关的我需要阅读的文档,我将不胜感激
我不记得 Hamcrest 有针对此特定设置的任何内容。
我只测试其中一组的大小,然后确保总和为 6
使用 hamcrest-2.2.jar from hamcrest.org 和 JUnit4
这在第三个 assertThat
中失败,因为我故意将其创建为预期值为 5 的失败。设置为时测试报告没有失败6:
import static org.hamcrest.Matchers.*;
import static org.hamcrest.MatcherAssert.assertThat;
import org.junit.Test;
import java.util.List;
import java.util.Set;
public class MyListTest {
@Test
public void listSize() {
MyList tester = new MyList();
List<Set<String>> result = tester.generate();
// assert statements
assertThat(result, hasSize(2)); // yours
assertThat(result.get(0), anyOf(hasSize(2), hasSize(4))); // is either 2 or 4
assertThat((result.get(0).size() + result.get(1).size()), equalTo(5)); // sum must be 6. FAILS with 5 :)
}
}
已测试class:
import java.util.List;
import java.util.Set;
public class MyList {
public List<Set<String>> generate() {
Set<String> s1 = Set.of("Hello", "World");
Set<String> s2 = Set.of("Testing", "One", "Two", "Three");
return List.of(s1,s2);
}
}
我正在尝试为 returns
的方法编写 JUnit 测试List<Set<String>> result = build(List<Account> accounts, List<Order> orders);
我可以用
检查我是否有预期的条目数assertThat(result, hasSize(2));
但我正在努力寻找关于如何编写断言的明确文档,该断言列表包含一个集合大小为 2 的条目和一个集合大小为 4 的条目。如果有人可以指出相关的我需要阅读的文档,我将不胜感激
我不记得 Hamcrest 有针对此特定设置的任何内容。
我只测试其中一组的大小,然后确保总和为 6
使用 hamcrest-2.2.jar from hamcrest.org 和 JUnit4
这在第三个 assertThat
中失败,因为我故意将其创建为预期值为 5 的失败。设置为时测试报告没有失败6:
import static org.hamcrest.Matchers.*;
import static org.hamcrest.MatcherAssert.assertThat;
import org.junit.Test;
import java.util.List;
import java.util.Set;
public class MyListTest {
@Test
public void listSize() {
MyList tester = new MyList();
List<Set<String>> result = tester.generate();
// assert statements
assertThat(result, hasSize(2)); // yours
assertThat(result.get(0), anyOf(hasSize(2), hasSize(4))); // is either 2 or 4
assertThat((result.get(0).size() + result.get(1).size()), equalTo(5)); // sum must be 6. FAILS with 5 :)
}
}
已测试class:
import java.util.List;
import java.util.Set;
public class MyList {
public List<Set<String>> generate() {
Set<String> s1 = Set.of("Hello", "World");
Set<String> s2 = Set.of("Testing", "One", "Two", "Three");
return List.of(s1,s2);
}
}