2014-05-06 13 views
6

Devo utilizzare le istruzioni di asserzione (assertEquals, ...) nel metodo @Before di un test JUnit?Utilizzare un'asserzione nel metodo @Before di un test JUnit?

Se l'asserzione fallisce, tutti i test avrà esito negativo, quindi si comporta esattamente come voglio, ma non sono convinto che sia una buona idea come il metodo -annotated @Before non è un test.

+0

Direi di no, poiché è necessario utilizzare tale metodo per impostare gli elementi richiesti per ciascun test. – onesixtyfourth

+1

Se l'installazione del test fallisce e, di conseguenza, nessuno degli altri test avrà esito positivo, perché continuare ad eseguire i test? –

risposta

6

Sembra che il meccanismo Assume sia più appropriato.

Un insieme di metodi utili per affermare ipotesi sulle condizioni in cui un test è significativo. Un'assunzione fallita non significa che il codice è rotto, ma che il test non fornisce informazioni utili. Il runner JUnit predefinito tratta i test con ipotesi errate come ignorate. I corridori personalizzati possono comportarsi diversamente.

Questo forse sembra più intuitivo, dal momento che si sta testando una condizione preliminare di test prima di eseguire effettivamente ogni test. Nota il riferimento sopra ai corridori personalizzati che si comportano diversamente, e potresti correggere un corridore per fallire piuttosto che ignorare silenziosamente il test.

+0

Non sono d'accordo. Credo che l'assunto salterà silenziosamente tutti i test piuttosto che fallire come è il risultato desiderato. –

+0

Nota l'ultima frase della citazione. Un runner personalizzato può essere creato per fallire per ogni ipotesi fallita –

3

Personalmente, non vedo alcun problema con esso. Se si desidera che tutti i test falliscano, non è soddisfatta una condizione preliminare che soddisfi i requisiti. Il mio unico pensiero è che dovresti verificare le condizioni preliminari che non eseguono il test del codice sotto test. Altrimenti sembrerebbe fuorviante e suggerirei di inserire la condizione in un metodo che viene chiamato da ogni test.

Problemi correlati