2013-07-24 8 views
5

Ho bisogno di scrivere alcuni test con JUnit per testare le nostre classi che accedono al database, alcuni sono piuttosto semplici (selezionare un elenco di elementi) altri inseriscono nuovi elementi, si conoscono elementi di base di SQL.Junit: test delle classi di query

Ora la mia domanda è: quali sono alcune cose che devo tenere a mente quando scrivo i miei test?

Ad esempio: la classe di database recupera elementi da una tabella, potrei verificarla con id validi, id non validi ma cos'altro?

Quindi, per riassumere: come è possibile testare le vostre classi di query?

E 'stato un po' che ho scritto alcun test, quindi sono un po 'arrugginito :)

risposta

2

Se stai solo testando le query SQL, è possibile

  • Run ognuna delle query in uno scenario successo per verificare di avere le affermazioni corrette
  • (come lei ha ricordato) selezionare gli iD non validi
  • Inserire record duplicati (da PK o chiave unica)
  • garantire non si può mettere un nul l in campi non annullabili.
  • Eliminare gli ID non validi (in caso di guasto? O semplicemente ignorare che la riga non esiste?)
  • Convalida eventuali controlli si dispone su una colonna
  • Forse alcuna convalida è necessario evitare che un String per essere memorizzati in una colonna varchar più corta?

Non ho mai fatto più del primo punto elenco per le query, ma posso vedere un certo valore nel testare alcuni scenari aggiuntivi.

Una buona pratica per questo tipo di test di integrazione, è quella di poter cancellare il DB e inserire tutti i dati necessari per ogni test, in modo da garantire che ogni test sia isolato. Se stai usando java puoi usare un framework come DBUnit per farlo. Un'altra buona pratica è che la cancellazione del DB e la creazione dei dati di test viene eseguita prima di, si esegue ogni test anziché dopo. Questo ha il vantaggio che se un test fallisce, si avrà il DB nello stato quando il test fallisce.

Qualcos'altro che è possibile testare è qualsiasi tipo di trasformazione di dati eseguita a livello di DAO (ad esempio una colonna varchar con un elenco di valori separati da virgole e la si trasforma in un elenco, anziché lasciarlo come stringa) .

+1

Alcuni puntatori molto utili :) Se questa è la migliore risposta, la accetterò ma aspetterò un po 'per vedere se arrivano altri suggerimenti :) ma grazie in ogni caso :) – darkownage