hamcrest-core
와 hamcrest-library
를 함께 걸어줘야 충분한 Matcher들을 확보할 수 있다.hamcrest-all
에 걸어준다.User user = new User("이하늬", 20, "몰라"); // name, age, description // 테스트 결과 Matchers.<Type>hasProperty(..) 형태로 사용해야만 제대로 작동했다. assertThat(user, Matchers.<User>hasProperty("name", is("이하늬"))); user = new User(null, 20, "몰라"); // name, age, description assertThat(user, Matchers.<User>hasProperty("name", nullValue()));
List<User> users = new ArrayList<User>(); users.add(new User("이하늬", 20, "예뻐~")); users.add(new User("김태희", 30, "더 예뻐~")); assertThat(users, Matchers.<User>hasItem(Matchers.<User>hasProperty("name", is("김태희"))));
assertThat("Expected images", (Iterable<Object>) hotel.getImages() , containsInAnyOrder(hasProperty("filename", is("radisson1.jpg")) , hasProperty("filename", is("radisson2.jpg"))));
// hamcrest의 generic 관련 문제 피해가기 List stakeholders = stakeholderManager.findByName("Health"); // 원래는 List<Stakeholder> 타입이지만 hamcrest 비교시 문제가 발행해서 List로 변경. assertThat((List<Object>) stakeholders, hasItem(hasProperty("name",is("Health Associates"))));