2012-09-26 15 views
43

Al momento utilizzo il seguente codice per asserire su un valore boolean, tuttavia il metodo org.hamcrest.Matchers.is() è obsoleto.Qual è l'alternativa all'utilizzo del metodo Hamcrest deprecato is()?

assertThat(someValue, is(false)); 

C'è una semplice sintassi alternativa per verificare i valori booleani senza ricorrere a assertTrue() che ti dà poveri messaggi di errore del tipo "java.lang.AssertionError"


Modifica dopo aver ricevuto commenti/risposte

I miei dubbi iniziali sono stati sollevati perché Eclipse mostra la seguente dichiarazione di importazione come deprecato

enter image description here

sulla visualizzazione Hamcrest API documenti ci sono 3 variazioni overload del metodo is(), uno solo dei quali è obsoleto.

Pertanto, per chiarire il commento da @mark e la risposta da @matt, l'uso di is() che ho postato sopra è valido e non deprecato.

+1

Non è deprecato, preferisco sempre 'is()' a 'equalTo()' per i booleani. Ma sono pseudonimi l'uno per l'altro. –

+0

È possibile includere '*' invece di nominare ciascun abbinatore per brevità ed evitare l'avviso. –

+8

@David ... fino a quando non si utilizza "Organizza le importazioni" – Brad

risposta

38

Hai provato equalTo(T)?

assertThat(someValue, equalTo(false)); 

non vedo che is(T) è deprecato - is(Class) is deprecate d comunque.

+5

Grazie per il chiarimento. Hai ragione 'is (T)' non è deprecato. Vedo che è sovraccarico di sibling 'is (Classe )' è deprecato che mi porta a credere che tutti gli usi di 'is()' sono stati deprecati. – Brad

9

Avevo pensato che si trattasse di un problema di dipendenza transitiva, ma in realtà è solo un problema di visualizzazione in Eclipse in cui contrassegna l'importazione come deprecata perché è presente un modulo sovraccarico. Il codice dovrebbe essere compilato correttamente poiché l'importazione esporrà tutti i moduli.

Il modulo obsoleto è stato rimosso dall'origine e non sarà presente nella prossima versione (1.4).

risposta originale

Il problema è che JUnit includes a set of Hamcrest classes in its JAR. È possibile utilizzare junit-dep.jar per ora, ma le versioni più recenti (4.9 e 4.10 finora) di JUnit li omettono.

+0

Questo è un problema, ma in che modo è correlato a questa domanda? Io uso junit-4.11 e ho ancora questo. In hamcrest-1.3 esistono tutti e tre i metodi citati. Quello che è prima nell'ordine eclissi li trova è quello deprecato e AFAICT che è l'unico flag di eclissi come deprecato. È interessante notare che è collocato sotto gli altri nel file sorgente. – aron

+1

@aron Ho aggiornato la mia risposta ora che vedo che si tratta solo di un problema di visualizzazione di Eclipse. –

Problemi correlati