hamcrest 대신 FEST Assert 를 사용해 보자

기본

hamcrest 의 단점 중 하나는 많은 수의 static import 가 필요해 이클립스에서 자동완성 기능을 사용하기 어렵다는 것이죠. Intellij는 메소드 자동완성도 가능하지만 여전히 어떤 이름의 메소드가 있는지 모르거나 해당 매처가 어떤 타입을 지원하는지 모르면 사용하기 어렵긴 매한가지 입니다.

FEST Assert의 경우 빌더 패턴을 통해 이 문제를 매우 운치있게 풀어나갔습니다.

// String specific assertions
assertThat(frodo.getName()).startsWith("Fro").endsWith("do")
                           .isEqualToIgnoringCase("frodo");

// collection specific assertions
assertThat(fellowshipOfTheRing).hasSize(9)
                               .contains(frodo, sam)
                               .excludes(sauron);

hamcrest 나 jUnit assertThat() 과는 다르게 assertThat() 에 검증할 파라미터만 넘기고 매처는 메소드 체이닝으로 뙇! 넘긴 파라미터의 타입에 따라 매처가 뙇! static import 를 딱 하나만 해주면 되는거죠. 괜찮지 않나요? 여기에 2.x 버전 대라 그런지 hamcrest 로 할 수 있는 것 + 타입에 따라 다양하게 제공되는 매처들이 많아 편하네요. 뿐만 아니라 Joda Time, Guava 용 모듈이 따로 있어 최적화된 테스트가 가능합니다.

한 가지 문제점은 FEST Assert 가 기존 jUnit 의 assertThat() 과 같은 이름의 static method 를 사용하기 때문에 같이 사용한다기 보단 대체한다는 생각으로 접근해야 합니다.  그래서 그런지 jUnit 에서 마이그레이션 하는 방법도 만들어 놨더군요.

안 써본 분들은 한 번 써보시길.. 🙂