2011-11-30 14 views

Odpowiedz

4

Tam jest bool project który zapewnia następującą składnię:

if(the(name, is(equalTo("Alex")))) { 
... 
} 
+0

Wow, to naprawdę imponujące! – Vitamon

+1

Projekt bool IMHO jest nieco przesadny dla prostej metody "the". Mimo że zapewnia dodatkowe matchery, ale są to tylko duplikaty obiektów Hamcrest (takich jak allOf, anyOf, both, both, itp.) – Jonas

5

To tylko Java, to od Ciebie zależy, co z nią zrobisz. Hamcrest homepage mówi:

zawiera bibliotekę obiektów dopasowujący (znany również jako ograniczenia lub orzeczników) pozwalającą zasady „mecz”, który zostanie określony deklaratywnie, które mają być stosowane w innych ram. Typowe scenariusze obejmują testowanie struktur, wyśmiewanie bibliotek i reguły sprawdzania poprawności interfejsu użytkownika.

Uwaga: Hamcrest nie jest biblioteką testowania: to po prostu zdarza się, że dopasowujących są bardzo przydatne do testowania.

Istnieje również a page on the other frameworks, które używają Hamcrest.

+0

Zgadzam się, ja po prostu potrzebuję pracy przykład, jak używać dopasowujących bez assertThat – Vitamon

5

Można użyć metody matches(value) dowolnej instancji Matcher.

if (equalTo("John").matches(name)) { ... } 

Aby poprawić czytelność, tworzyć własne metody pomocnika podobną do assertThat.

public static <T> boolean checkThat(T actual, Matcher<? super T> matcher) { 
    return matcher.matches(actual); 
} 

... 

if (checkThat(name, equalTo("John"))) { ... } 

Jeśli wymyślić lepszej nazwy niż checkThat takich jak ifTrueThat, należy dodać ją w komentarzu. :)

5

Podążając za odpowiedzią Davida, obecnie robimy dokładnie to, a nasza metoda pomocnicza nazywa się "the()". Prowadzi to do kodowania jak:

if(the(name, is(equalTo("John")))) {...} 

który dostaje trochę lisp-y na końcu, ale sprawia, że ​​jest bardzo czytelny nawet dla klientów.

Powiązane problemy