Thursday, 18 February 2010

Test

 Alcune considerazioni sulla scrittura dei test partendo da questo test iniziale:
   @Test 

    public void testExtModificaStatoAnalizzatore2() {
        try {            

            String sigla = "PieSSeeMMe";
            
            List rows = lab.extGetAnalizzatoriByDes(sigla);
            
            assertEquals (1,rows.size());
            
            Analizzatore ana = (Analizzatore) rows.get(0);

            if (ana.isStatoColloquio()) {
                lab.extModificaStatoAnalizzatore("",
                        OpAnalizzatore.DISATTIVA_COLLOQUIO, ana.getCod());
            } else {
                lab.extModificaStatoAnalizzatore("",
                        OpAnalizzatore.ATTIVA_COLLOQUIO, ana.getCod());
            }
            assertTrue(true);        
        } catch (Exception e) {
            fail(e.getMessage());
        }
    }   
 

  1. Sulle collection specificare il tipo di oggetti contenuti, facilita scrittura e comprensione. Invece di List List<Analizzatore>.
  2. Dare sempre occhiata che non ci siano warnings oltre che errori (tabs dei problemi). 
  3. Fissare import (CTRL + O).
  4. Alla fine dei test i dati devono essere invariati. Ad es. se aggiungo accettazione la devo cancellare alla fine del test. Esiste su DBL un modo per ripristinare i dati nel caso si verifichi errore durante esecuzione dei test che ha modificato i dati? Ad es. sul DB spiano e ricarico i dati di test e si riparte sempre dalla stessa situazione
  5. Sui test far lanciare le eccezioni, meno codice da scrivere.
  6. Fare sempre controllo su ID dell'oggetto per sapere se e' lui! Nel test di cui sopra si controlla solo il numero di oggetti restituiti.
  7. Le verifiche quando e' possibile vanno fatte rileggendo oggetti modificati dalla persitenza. Nell'esempio di cui sopra il test uscirebbe positivo anche se lo stato dell'analizzatore non e' cambiato: si testa solo che la chiamata non generi eccezione.

Il test e' stato modificato come riportato sotto, si noti in particolare la rilettura e il ripristino dello stato dei dati alle condizioni iniziali.
@Test 
public void testExtModificaStatoAnalizzatore2() throws Exception {

String sigla = "PieSSeeMMe";

List<Analizzatore> rows = lab.extGetAnalizzatoriByDes(sigla);
assertEquals(1, rows.size());
Analizzatore ana = (Analizzatore) rows.get(0);

assertEquals("PSM", ana.getCod());

// Stato dell'oggetto iniziale
assertEquals(false, ana.isStatoColloquio());

// Cambio lo stato dell'oggetto
lab.extModificaStatoAnalizzatore("",
OpAnalizzatore.ATTIVA_COLLOQUIO, ana.getCod());
// Verifico cambiamento dei dati rileggendoli
rows = lab.extGetAnalizzatoriByDes(sigla);
assertEquals( 1, rows.size());
ana = (Analizzatore) rows.get(0);
assertEquals("PSM", ana.getCod());
assertEquals(true, ana.isStatoColloquio()); // nuovo stato

// Ripristino e riverifico
lab.extModificaStatoAnalizzatore("",
OpAnalizzatore.DISATTIVA_COLLOQUIO, ana.getCod());
rows = lab.extGetAnalizzatoriByDes(sigla);
assertEquals( 1, rows.size());
ana = (Analizzatore) rows.get(0);
assertEquals("PSM", ana.getCod());
assertEquals(false, ana.isStatoColloquio()); // stato di partenza (dati invariati)
}


No comments:

Post a Comment

Followers