Errori tipici
Qui di seguito sono elencati
errori tipici che possono portare il progetto a non essere compilabile
o testabile.
Le classi-scheletro presenti nel progetto di partenza rappresentano un
contratto. Come tali non possono essere alterate nella loro parte
pubblica, le uniche modifiche accettabili riguardano l'aggiunta di
metodi e la scrittura del corpo dei metodi, caratteristiche che non
riducono o alterano le funzionalità specificate.
N.B. questi sono errori gravi ed il
programma viene considerato completamente sbagliato.
Nome package errato.
Il nome del package che contiene le classi-scheletro di partenza e
destinato a contenere le classi da sviluppare, non deve cambiare nome.
Se il nome viene cambiato i riferimenti al package presenti nei test
non trovano le classi attese.
Può succedere che il package cambi nome se non si seguono le istruzioni per estrarre
il progetto dal file zip.
In questo caso si hanno errori di compilazione del tipo:
package xxx does not
exists: il package con il nome atteso non esiste
bad class file pack.xxx
[...] file does not contains class pack.xxx: la struttura
delle directory non è quella originale e quindi nel folder pack non ci sono le classi del
package pack.
Metodo modificato.
Non si devono cambiare i tipi di ritorno e i parametri dei metodi
(costruttori inclusi).
Quando i test invocano un metodo con certi parametri (o senza) questo
non viene trovato.
Può succedere i avere bisogno di metodi modificati (ad. es per
motivi di test), in questo caso si devono creare nuovi metodi invece di
modificare quelli esistenti.
Questo tipo di errore si manifesta con messaggi del tipo cannot resolve symbol.
Aggiunta di eccezioni.
Non si devono aggiungere nuove eccezioni lanciate ai metodi delle
classi scheletro.
Se ci sono eccezioni aggiuntive, rispetto a quelle dichiarate
inizialmente, le classi di test si ritrovano con eccezioni non gestite.
Spesso si è tentati di aggiungere eccezioni per eccesso di zelo
o per gestire situazioni non menzionate nelle specifiche, che devono
essere ignorate.
Questo tipo di errore si manifesta con messaggi del tipo unreported exception xxx; must be caught
or declared to be thrown.
Loop infiniti
Il programmi non devono contenere loop infiniti.
Se il programma ha dei loop infiniti, i test che li richiamano non
terminano, in tale caso scatta un timeout che termina forzatamente i
test.
I loop infiniti sono chiaramente un errore di programmazione, i cicli while(true){ ... } utilizzati
nelle interfacce a carattere devono prevedere un comando per terminare
il loop.
Nel report dei test questo errore viene segnalato come Timeout durante il test.
Terminazione del programma
I programmi non devono contenere chiamate al metodo System.exit().
Quando i test chiamano il metodo contenente l'invocazione a System.exit() l'applicazione JUnit
viene terminata, quindi i test non vengono completati.
La terminazione di un programma deve essere fatta tramite un return del
metodo main(). Nel caso di
applicazioni con interfaccia grafica è importante chiudere
normalmente la finestra principale (setDefaultCloseOperation(DISPOSE_ON_CLOSE);).
Ultima modifica: 11 Giugno 2004.