2012-09-26 6 views
43

W tym momencie używam następującego kodu, aby potwierdzić na wartości boolean, jednak metoda org.hamcrest.Matchers.is() jest nieaktualna.Co to jest alternatywa dla metody Przestarzała Hamcrest to()?

assertThat(someValue, is(false)); 

Czy istnieje prosta alternatywa składnia do testowania wartości logicznych, bez uciekania się do assertTrue() co daje słabe komunikaty o błędach, takich jak „java.lang.AssertionError”


Edycja po otrzymaniu uwag/odpowiedzi

Moje początkowe obawy zostały podniesione, ponieważ Eclipse pokazuje następujące zgłoszenie importu jako wycofane

enter image description here

Oglądając Hamcrest API Dokumenty są 3 przeciążone odmiany sposobu is(), z których tylko jedna jest wycofywany.

Dlatego, aby wyjaśnić komentarz @mark i odpowiedź od @matt, użycie is(), które napisałem powyżej, jest poprawne i nie jest przestarzałe.

+1

Nie jest przestarzałe, zawsze preferuję 'is()' to' equalTo() 'dla wartości logicznych. Ale są to aliasy dla siebie nawzajem. –

+0

Możesz dodać '*' zamiast nazywać każdy matcher dla zwięzłości i unikać ostrzeżenia. –

+8

@David ..., dopóki nie użyjesz opcji "Organizuj import" – Brad

Odpowiedz

38

Czy próbowałeś już equalTo(T)?

assertThat(someValue, equalTo(false)); 

Nie widzę że is(T) jest przestarzała - is(Class) is deprecate d jednak.

+5

Dzięki za wyjaśnienie. Masz rację 'jest (T)' nie jest przestarzałe. Widzę, że jest przeciążone rodzeństwo 'is (Class )' jest przestarzałe, co doprowadziło mnie do przekonania, że ​​wszystkie zastosowania 'is()' zostały wycofane. – Brad

9

Myślałem, że to był problem zależności przejściowej, ale w rzeczywistości jest to tylko problem z wyświetlaniem w środowisku Eclipse, w którym oznacza on zaimportowany jako przestarzały, ponieważ jest to jeden przeciążony formularz. Kod powinien skompilować dobrze, ponieważ import ujawni wszystkie formularze.

Nieaktualny formularz został usunięty ze źródła i nie będzie istnieć w następnej wersji (1.4).

Original Odpowiedź

Problemem jest to, że JUnit includes a set of Hamcrest classes in its JAR. Możesz teraz użyć junit-dep.jar, ale nowsze wersje (4.9 i 4.10) JUnit pomijają je.

+0

To jest problem, ale jak to jest związane z tym pytaniem? Używam junit-4.11 i nadal mam to. W hamcrest-1.3 istnieją wszystkie wymienione trzy metody. Ta, która jest pierwsza w zaćmieniu celu, stwierdza, że ​​jest przestarzałą, a AFAICT, która jest flagą jednego zaćmienia, jako przestarzałą. Co ciekawe, jest umieszczony pod innymi w pliku źródłowym. – aron

+1

@aron Zaktualizowałem swoją odpowiedź teraz, gdy widzę, że to tylko problem z wyświetlaniem Eclipse. –