Molte volte si tralascia, specialmente per piccoli progetti, un rigoroso test del codice che scriviamo. I linguaggi ad oggetti permettono di risalire ai problemi in modo diretto, ma abbiamo bisogno di testare il più possibile le nostre applicazioni. Lo stress a cui sottoponiamo i nostri codici ci farà perdere tempo ma avremo di certo un codice più sicuro, potremo stare più tranquilli.
Come sviluppatore Java, vi propongo un sistema molto efficace e veloce di testare le vostre classi Java. Esiste un tool molto famoso, in particolare nell'ambito di Xp Programming, che si chiama JUnit. JUnit è un software scritto in Java che vi permette di realizzare test su classi Java.
Il concetto base di JUnit, è stato ripreso e adottato per un tool simile scritto interamente in Python che si chiama PyUnit. Ho utilizzato questo per ovvi motivi:
A questo punto vi chiederete che centra Python con Java ??? Python è il nostro linguaggio per testare classi Java tramite il famoso Jython cioè l'implementazione in Java dello stesso linguaggio Python. Jython ci permetterà di testare una qualsiasi classe presente nella variabile CLASSPATH con brevi righe di codice Python.
Sostanzialmente la stessa cosa si poteva fare scrivendo codice di test in Java con JUnit ma come ho detto prima, si perderebbe tempo inutile a ricompilare oltre che la classe anche il codice di test. mentre con jython una volta compilato le classi Java mandiamo subito in esecuzione il nostro test.
Di seguito vi propongo alcuni codici di esempio per testare una classe Java:
Create la vostra classe Java:
package com.blackbird.test;
public class MyTest {
private final int count = 10;
public void scrivi() throws Exception{
for(int i=0;i < count;i++){
System.out.println("Ciao Mondo!");
}
}
}
Una volta compilato il codice qui sopra fate in modo che sia
raggiungibile tramite la variabile d'ambiente CLASSPATH.
A questo punto siete pronti per scrivere il codice di test:
# codice di test - test.py from com.blackbird.test import MyTest import unittest class Test(unittest.TestCase): def testScrivi(self): myt = MyTest() myt.scrivi()
PyUnit andrà a caricare in modo sequenziale i metodi implementati nella classe Python Test,
eseguirà il codice all'interno dei metodi e ritornerà un report del test con tanto di tempo impiegato
e risultato del test.
Il codice di test è pronto. basta darlo in pasto a PyUnit per testare la nostra classe.
$ jython unittest.py test.py
Oppure con interfaccia grafica:
$ jython unittestgui.py test.py
Il testing del software è un argomento molto vasto e ridurlo a poche righe è troppo riduttivi, ci sarebbe da parlare moltissimo, vi ho dato un'idea per testare il vostro software Java, neanche io ho approfondito l'argomento, comunque se avete idee, sono pronto a rispondere a ogni vostra email.
Alcuni link interessanti sull'argomento: