[英]JUnit Hamcrest assertion
是否有Hamcrest Matcher
可以讓我斷言方法的結果(返回對象的Collection
至少具有一個包含具有特定值的屬性的對象?
例如:
class Person {
private String name;
}
被測方法返回Person
的集合。 我需要斷言至少有一個人叫彼得。
首先,您需要創建一個Matcher
Person
的名字的Matcher
。 然后,您可以使用hamcrest的CoreMatchers#hasItem
來檢查Collection
是否具有此數學家匹配的項目。
就個人而言,我喜歡在static
方法中匿名聲明此類匹配器,作為一種語法加糖方法:
public class PersonTest {
/** Syntactic sugaring for having a hasName matcher method */
public static Matcher<Person> hasName(final String name) {
return new BaseMatcher<Person>() {
public boolean matches(Object o) {
return ((Person) o).getName().equals(name);
}
public void describeTo(Description description) {
description.appendText("Person should have the name ")
.appendValue(name);
}
};
}
@Test
public void testPeople() {
List<Person> people =
Arrays.asList(new Person("Steve"), new Person("Peter"));
assertThat(people, hasItem(hasName("Peter")));
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.