Come posso testare i metodi di accesso al database in Java? [chiuso]

-2

Voglio scrivere un test per un metodo che accede a un database come quello seguente.

public class MyClass{
    public String getAddress(Int id){
        String query = "Select * from Address where id="+id;
        //some additional statements           
        resultSet = statement.executeQuery();
        return result.getString(ADDRESS);        
    }
}

Come posso testare questo metodo? Sto usando Java.

    
posta javaStudent 16.11.2012 - 18:59
fonte

2 risposte

1

Probabilmente sarebbe meglio evitare i test di integrazione per la maggior parte di questi metodi. Invece, vorresti esaminare mock e stub ( Mockito è un framework di beffardo ben considerato per Java) e verificare che il metodo si comporta nel modo corretto. Vale a dire, costruendo l'SQL previsto per l'input (su un sidenote, dovresti utilizzare query parametrizzate, non solo concatenare stringhe), passarlo all'oggetto corretto e restituire il valore corretto dalla riga derisoria.

    
risposta data 16.11.2012 - 20:41
fonte
2

Ricorda che non stai testando se il tuo database funziona.

Se si utilizza un database da uno dei principali fornitori (o anche il secondo e il terzo livello) è possibile garantire che abbiano verificato che un'istruzione SQL leggerà o scriverà.

Probabilmente vuoi testare una serie di cose:

  • Ho ricevuto le mie proprietà di connessione?
  • Le colonne restituite dalla mia istruzione SQL corrispondono alla mia struttura dati?

etc

Alcuni di questi possono essere risolti da schemi di derisione (come descritto da un altro poster). Alcuni di questi potrebbero essere configurati come test di integrazione eseguiti indipendentemente dai test unitari. Alcuni di questi possono essere testati utilizzando un database in memoria.

Ho usato HSQLDB in passato per creare un database inmemory, pre-compilare dati e quindi eseguire i miei test unitari. Nei database di memoria sono gli ordini di grandezza più veloci di un database tradizionale, non devi preoccuparti di configurare le transazioni per pulirle ecc.

    
risposta data 17.11.2012 - 16:56
fonte

Leggi altre domande sui tag