Domanda

Ho usato sia CppUnit e boost::test per C ++ unit testing. Generalmente preferisco boost::test, soprattutto perché le macro auto-test di ridurre al minimo lo sforzo di test di configurazione. Ma c'è una cosa che mi manca da CppUnit: la capacità di registrare il proprio "protettori", le istanze di cui avvolgono automaticamente tutti i test run. (Tecnicamente, si installa un test "ascoltatore", e che può avvolgere ogni test in un ambito di protezione).

Ho trovato questi preziosa in passato per il monitoraggio Unittests per gli effetti collaterali imprevisti (per esempio il codice verifica non ha cambiato le virgola mobile flag di stato unità). Non riesco a vedere alcun equivalente nella boost::test documentazione , anche se BOOST_FIXTURE_TEST_CASE forse si avvicina di più.

Qualche suggerimento su come ottenere la migliore la stessa cosa come protettori di CppUnit in boost::test?

(non ho davvero guardato in esecuzione di boost::test ancora, ma se si tratta di qualcosa di simile CppUnit è necessario utilizzare qualcosa di molto simile protettori stesso).

È stato utile?

Soluzione

Non ho mai usato CppUnit, quindi non so come funzionano le protezioni. Siete alla ricerca di qualcosa che avvolge le prove individuali, o l'intera suite di test?

Nel primo caso, è possibile utilizzare apparecchi come si parla, ma se ho capito bene, infissi dovrebbe essere considerato "fuori" il test. Essi mirano a creare qualunque sia il test ha bisogno, e pulisce in seguito. Qualsiasi errore reale-test dovrebbe essere nella prova stessa, ma può essere facilmente implementata con Raii. È sufficiente definire una classe che controlla tutto ciò che serve nel suo distruttore, e quindi creare un'istanza locale di esso, all'inizio del test. Dal momento che è costruito in primo luogo, viene distrutto scorso, in modo che possa facilmente verificare che il test non ha modificato alcun stato imprevisto.

Se si desidera controllare questo dopo tutti i test hanno eseguito, probabilmente vuole noreferrer infissi globali

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