Discussione: JUnit
View Single Post
Old 14-01-2005, 23:21   #2
theClimber
Senior Member
 
L'Avatar di theClimber
 
Iscritto dal: Oct 2000
Messaggi: 235
I tutorial sul sito di junit (gurda la pagina 'Getting Started') sono abbastanza interessanti e sicuramente meritano di essere studiati. Ci sono tutte le basi necessarie

L'unico problema e' che spiegano la meccanica, ma non danno molti consigli su come scrivere i test in base alle situazioni. Io, nella situazione piu' semplice possibile (lasciando stare Setup/TearDown, decoratori, estensioni di junit, TestDrivenDevelopment, Mock Objects, DynaMock ) per semplificare al massimo , trovo utili i seguenti pattern di test, la base per tutti gli altri:

Codice:
// $Id$
import junit.framework.TestCase;

/**
 * @author stefano
 * @version $Revision$
 */
public class EsempioDiTest extends TestCase
{
    /**
     * Serve per controllare i valori risultanti
     */ 
    public void testPositivo() throws Exception
    {
        // Crea situazione iniziale
        ClasseDaTestare oggettoDellaClasse = new ClasseDaTestare("Valore di inizializzazione");
        
        // Esegui il codice
        String result = oggettoDellaClasse.doSomething();
        
        // Verifica il risultato
        assertEquals("Valore di inizializzazione", result);
    }
    
    /**
     * Serve per controllare che in opportune condizioni gli errori siano individuati correttamente
     */ 
    public void testNegativo() throws Exception
    {
        try
        {
            // Crea situazione iniziale
            ClasseDaTestare oggettoDellaClasse = new ClasseDaTestare("Orrendo valore che provoca IllegalStateException !!!!! ");
        
            // Esegui il codice
            oggettoDellaClasse.doSomething();
            
            // Se arrivo qui, non va bene, perche in questo testo doveva esserci un eccezzione, quindi
            fail(); // il test fallisce
        }
        catch (IllegalStateException e)
        {
            // Tutto OK !!
        }
    }
}
alla fine, si tratta sempre di :
- Creare una situazione iniziale
- Eseguire il codice da testare
- Verificare che sia successo cio' che doveva succedere

Nota che una volta scritti questi test, e' come se fossero una specifica per implementare il codice (io ad esempio il codice per farli funzionare non lo ho ancora scritto, lo lascio volentieri come esercizio ai volenterosi ). Quando il codice compila ed i test girano il codice e' completo, se ovviamente i test specificano tutto cio' che si vuole. Questo e' il concetto di base del Test Driven Development (TDD), in cui si scrivono i test con lo scopo di chiarire e documentare cosa deve fare il codice.

Se vuoi approfondire qualche argomento specifico, fammi sapere.

Ciao
__________________
...writing about climbing is boring. I would rather go climbing. (Chuck Pratt)
theClimber è offline   Rispondi citando il messaggio o parte di esso