Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Junit

  1. #1

    Junit

    Salve ragazzi mi sono appena iscritto perchè ho bisogno di un grande aiuto. Il mio problema è Junit,vorrei conoscere in dettaglio tutte le potenzialità di questo framework. Sono riuscito a capire come funziona il test dei metodi di una classe attraverso esempi semplici come la somma, prodotto...questo genere qua. Ma non riesco a capire come usare il @before,@after. Un'altra domanda. Si crea una classe con vari metodi, quando vado a creare la classe test mi da la possibilità di selezionare i metodi da utilizzare. Quello che chiedo è a cosa servono gli object che ci sono sotto i metodi che vado a selezionare ?spero di essere stato chiaro.
    Grazie mille

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    I metodi che annoti con @Before e @After vengono chiamati, rispettivamente, prima e dopo ogni metodo annotato con @Test.

    codice:
    
    public class MyTest {
    
    
        @Before
        public void setUp() {
            // inizializza l'ambiente di test comune
        }
    
    
        @After
        public void tearDown() {
            // pulisce e chiude eventuali risorse
        }
    
    
        @Test
        public void doTest() {
            // codice
        }
    
    
    }
    In questo esempio vengono chiamati nell'ordine: setUp(), doTest() e tearDown(). Se avessi più metodi @Test i metodi setUp() e tearDown() vengono chiamati per ciascuno di essi.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Oltre a quanto già detto correttamente da Alex'87, io aggiungo:

    Per ogni invocazione di un metodo di test, JUnit crea una nuova istanza della classe di test su cui poi invoca il metodo. Questo serve per avere uno stato "pulito" ad ogni singolo test. I metodi @Before/@After aiutano appunto a creare e liberare eventuali risorse notevoli usate dai test o per fare logiche comuni a tutti quanti i test.

    Esistono anche @BeforeClass/@AfterClass. Vanno usati su metodi public static void no-arg (senza argomenti). Vengono invocati una sola volta rispettivamente prima e dopo tutti i test.

    Queste annotazioni le puoi usare su più metodi (es. puoi avere 3 metodi @Before). L'ordine di esecuzione di questi metodi all'interno della classe non è garantito. Invece è garantito che i @Before in una super-classe vengono eseguiti prima di quelli nella sotto-classe e i @After in una super-classe dopo quelli nella sotto-classe.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  4. #4
    Immagine.jpggrazie mille per le risposte. Più o meno avevo capito a cosa servissero quei ma adesso non ho nessun dubbio. Ma dall'immagine a cosa servono quegli object ? noon li ho capiti e non so come utilizzarli

  5. #5
    Ho fatto questo piccolo esempio:
    public class CalcolatriceTest {


    @Before
    public void setUp() throws Exception {
    Calcolatrice c=new Calcolatrice();
    int a=5,b=7;
    assertTrue(a==4);
    }


    @After
    public void tearDown() throws Exception {
    }


    @Test
    public void testSomma() {
    //fail("Not yet implemented");
    Calcolatrice c=new Calcolatrice();
    int a=5,b=7;
    int s=c.somma(a,b);
    assertEquals("somma non corretta",12,s);
    }

    @Test
    public void testSomma1() {
    //fail("Not yet implemented");
    Calcolatrice c=new Calcolatrice();
    int a=4,b=5;
    int s=c.somma(a,b);
    assertEquals("somma non corretta",9,s);
    }


    }

    La mia idea è di andare a controllare oltre al risultato della somma anche la singola variabile.Nel @before ho imposto che a deve essere uguale a 4. Mi dovrò aspettare che il metodo testSomma fallisca mentre il metodo testSomma1 vada a buon fine, ma succede che entrambi i test falliscono. Dove sbaglio ? Ma poi assertTrue e assertEquals fanno la stessa cosa ?
    Ultima modifica di centurioneagri; 11-11-2015 a 02:43

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.