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:

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.