PDA

View Full Version : [cppunit]gestione delle eccezioni


NA01
23-12-2005, 10:11
ho scritto codice e test per una classe che servirà da elementi in un lista.
ogni elemento della classe rappresenta un processo, e, ragionevolmente non deve mai essere cancellato se non quando il processo è morto.
seguendo questa idea nel distruttore ho messo il controllo sull'esistenza del processo.

l'idea è quella di loggare il problema, ma non in tutti i casi.
quando chiudo il mio programma la lista dei processi attivi sarà sicuramente piena di processi ancora esistenti, e in quel caso non si deve loggare nulla ;)

quindi ho pensato di far lanciare al distruttore un'eccezione. in questo modo a seconda del punto del codice in cui la intercetto posso gestirla come meglio credo.
il problema è che tutti i test sulla funzione falliscono con un error. questo perchè nel test creo una classe con il pid del processo corrente, e prima di chiudere la funzione questa viene automaticamente distrutta (ma ovviamente il processo esise ancora).

ho provato a inserire


CPPUNIT_TEST(exist);
CPPUNIT_TEST_EXCEPTION(exist, StillExistException);


dove il codice di exist è:


void ChainElemTest::exist(){
ChainElem elem(getpid());
CPPUNIT_ASSERT(elem.exist());
}


ma il risultato del test è:


ChainElemTest::newElem : OK
ChainElemTest::exist : OK
ChainElemTest::exist : assertion



:mbe:
:cry:

why? :(
se tolgo il throw nella funzione tutto funziona bene, ma come faccio a gestire i log?


ciao