Utilizzando affermare e aspettarsi in GoogleTest
-
23-09-2019 - |
Domanda
Mentre ASSERT_ * macro causa cessazione del test case, EXPECT_ * macro continuano la sua valutazione. Vorrei sapere quale è il criterio per decidere se utilizzare uno o l'altro.
Soluzione
Usa ASSERT
quando la condizione di deve hold - se non lo fa il test si ferma proprio lì. Utilizzare questo quando il resto del test non ha significato semantico senza questa condizione di partecipazione.
Usa EXPECT
quando la condizione di dovrebbe attesa, ma nei casi in cui non possiamo ancora ottenere il valore di continuare il test. (Il test ancora definitiva sicuro alla fine, però.)
La regola generale è: uso EXPECT
per impostazione predefinita, a meno che non si richiede qualcosa a cui aggrapparsi per il resto dei test, nel qual caso si dovrebbe usare ASSERT
per quella particolare condizione
Gli fa eco all'interno della Primer :
Solitamente
EXPECT_*
sono preferiti, in quanto consentono più di guasti da segnalare in una prova. Tuttavia, si dovrebbe utilizzareASSERT_*
se non ha senso continuare a quando l'affermazione in questione non riesce.
Altri suggerimenti
Usa EXPECT_
quando si
- voler segnalare più di un guasto nel test
Usa ASSERT_
quando
- non ha senso continuare quando l'asserzione fallisce
Dal ASSERT_
interrompe la funzione immediatamente, se non riesce, possibile il codice di pulitura è saltato.
Preferisco EXPECT_
come predefinito.
In aggiunta alle precedenti risposte ...
ASSERT_
non termina l'esecuzione del test. Si torna da qualsiasi funzione è stato utilizzato in. Oltre a non aver il banco di prova, si restituisce return;
, e questo significa che non può essere utilizzato in una funzione che restituisce qualcosa di diverso da void
. A meno che non stai bene con l'avviso del compilatore, che è.
EXPECT_
fallisce il test case ma non lo fa return;
, in modo che possa essere utilizzato all'interno funzioni di qualsiasi tipo di ritorno.
Controllare il seguente link: Effective C ++ Test con GoogleTest (Slitta 23). C'è una buona linea guida / consigli per l'uso di ASPETTARSI vs ASSERT.