|
Un altra importante caratteristica che ci offre questo ambiente è l'uso dei test unitari sul nostro progetto attraverso l'integrazione con Junit. I test unitari si possono definire come test individuali di unità separate di un software (programma), nella programmazioni ad oggetti, tipicamente queste unità sono le classi e i metodi. Per prima cosa osservate la fig. 3 dove sono selezionati gli strumenti per effettuare i test.  Fig. 3 Documentazione, debugging e test unitari con BlueJ Ora clicchiamo con il tasto destro del mouse sopra la classe Semaforo e scegliamo l'ultima opzione dal menù contestuale: Crea la classe di test, quindi nella nostra area di lavora subito comparirà una classe di colore verde anziché arancione dal nome SemaforoTest (fare riferimento alla fig. 4).  Fig. 4 Documentazione, debugging e test unitari con BlueJ Ora sempre con il tasto destro sulla classe del test scegliamo Crea il metodo di test... e digitare nella finestra appena aperta “Verde”, poi analizzeremo perché abbiamo fatto questo, successivamente quando notiamo che sul lato sinistro dell'ambiente si accende la luce rossa vicino alla voce registra, andiamo a creare il nostro semaforo nel scrivania degli oggetti e da lì lanciamo il metodo go() e premiamo ok. Bene abbiamo realizzato il nostro primo test, non vi dimenticate di chiudere la registrazione cliccando sul tasto Fine nel lato sinistro di bluej. Per analizzare il test, apriamolo nell’ editor e osserviamo com'è costituito: /** *The test class SemaforoTest. * *@author Luzio Menna *@version 30 luglio 2004 */ publicclass SemaforoTest extends junit.framework.TestCase { /** *Default constructor for test class SemaforoTest */ public SemaforoTest() { } /** *Sets up the test fixture. * *Called before every test case method. */ protectedvoid setUp() { } /** *Tears down the tes tfixture. * *Called after every test case method. */ protectedvoid tearDown() { } publicvoid testVerde()Semaforo semaforo1 = new Semaforo(false, false, true); assertEquals(true, semaforo1.go()); { } } deve comparire qualcosa di simile. L'ultimo metodo come si può notare si chiama testVerde che è il nome chegli abbiamo assegnato noi precedentemente, ricordate??? Questo test non fa' altro che confrontare il valore true con il valore restituito dal metodo go(), che come si può intuire deve restituire true (perché al semaforo si passa con il verde accesso), la nostra classe per accesso intende true. Si noti che bluej genera automaticamente i test senza aver bisogno di scrivere una riga di codice, similmente alla realizzazione di una macro. Ora effettuiamo un altro test sempre sulla classe semaforo, però prima di farlo modifichiamo il metodo stampaComando nel seguentemodo, così da poter generare un test: /** * Con Questo metodo si verifica se una macchina può passare o meno * @return "true" se la macchina può passare, "false" se si deve fermare */ boolean stampaComando() { boolean sCmd; if(go()) sCmd = true; else sCmd = false; return sCmd; } Ancora una volta creiamo l'oggetto semaforo e poi lanciamo di nuovo Crea la classe di test, questa volta gli metteremo nome StopCmd , compiendo i passi che sono stati mostrati in precedenza proseguiamo fino all'ultima schermata, definiamo questa asserzione: “Uguale a true”. Così facendo strutturiamo il test in modo che da controllare che la macchina passi con il verde cioè, se c’è il verde stampa la scritta “GO >>>”. Lanciamo itest per verificarne la correttezza attraverso l’area dedicata: Visualizza >> Mostra i risultati dei test (come fig. 5) Fig. 5 Documentazione, debugging e test unitari con BlueJ In questo test non si sono riscontrati errori , altrimenti sarebbero stati segnalati in basso ed inoltre la linea verde che separa le due aree sarebbe stata di colore rosso.
|