Se si utilizza Linux, è possibile eseguire i test con memcheck.
la sezione Client Requests del manuale descrive diverse macro utili, di cui una è notato come utili per il test:
VALGRIND_COUNT_LEAKS
: inserisce i quattro argomenti con il numero di byte di memoria trovato dalla precedente controllo delle perdite per essere trapelato, dubbio, raggiungibile e soppresso. Ancora una volta, utile nel codice del cablaggio di prova, dopo aver chiamato VALGRIND_DO_LEAK_CHECK
.
La macro viene definita in memcheck.h
(probabilmente nel /usr/include/valgrind
), e la sequenza che si desidera assomiglierà
unsigned long base_definite, base_dubious, base_reachable, base_suppressed;
VALGRIND_DO_LEAK_CHECK;
VALGRIND_COUNT_LEAKS(base_definite, base_dubious, base_reachable, base_suppressed);
// maybe assert that they're zero!
// call test
unsigned long leaked, dubious, reachable, suppressed;
VALGRIND_DO_LEAK_CHECK;
VALGRIND_COUNT_LEAKS(leaked, dubious, reachable, suppressed);
CPPUNIT_ASSERT_EQUAL(base_leaked, leaked);
// etc.
Ripetendo che per ogni prova sarebbe un dolore, per cui si potrebbe scrivere macro della propria o, ancora meglio, uno specialista TestRunner.
fonte
2009-06-16 13:44:53
Questo non fallisce un test specifico in base a perdite di memoria ... –
Grazie, mi avrebbe dovuto essere più chiaro. Revised! –