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.

È stato utile?

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 utilizzare ASSERT_* 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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top