View Full Version : JUnit
Ciao raga, avete un buon tutorial riguardo JUnit da consigliarmi?
grazie
theClimber
14-01-2005, 23:21
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 :eek: ) per semplificare al massimo , trovo utili i seguenti pattern di test, la base per tutti gli altri:
// $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 :D
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
Originariamente inviato da theClimber
Se vuoi approfondire qualche argomento specifico, fammi sapere.
Ciao
Ciao,
mi sai indicare dei buoni riferimenti che trattino in generale questi argomenti? (Unit testing, test driven code...)
Grazie.
theClimber
15-01-2005, 14:49
Relativamente al TDD e' una pratica di design (e non solo di test, e' importantissimo il processo mentale che ti obbliga a scrivere e documentare il test prima del codice ) che e' stata introdotta essenzialmente dagli autori dell'eXtreme Programming, per cui molti libri relativi all'XP contengono informazioni (ma piu' discussioni metodologiche che non dettagli pratici su come effettivamente procedere).
Puoi dare un occhiata al seguente tutorial:
http://www.agiledata.org/essays/tdd.html
Libri Specifici sull' argomento :
Test Driven Development: By Example
by Kent Beck (che ha inizialmente proposto eXtreme Programming)
Test Driven Development: A Practical Guide
by David Astels:
Ho letto il secondo, non e' male se si cerca qualcosa di abbastanza pratico, dato si dilunga molto in esempi e spiega l'uso di junit ed estensioni nei minimi dettagli. Non affronta il test dei DB. Io ne sono rimasto un po deluso, perche' alla fine sono tutte informazioni che bene o male trovi su internet, ma puo' essere utile per una 'Terapia d'urto' sui test unitari ;)
Per la manutenzione di codice e test sonofondamentali sono anche le conoscenze sul refactoring. Il seguente libro e' un MUST:
Refactoring: Improving the Design of Existing Code
by Martin Fowler
Dovendo investire per comprare un libro, io punterei a quest'ultimo. Anche se gli esempi sono in java, ci sono un sacco di pricipi utili per il low level design OO in generale sia esso in java, C++, python, Smalltalk ....
Ciao
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.