簡體   English   中英

JUnit Hamcrest斷言

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM