3. Come testare un DAO ?
Idea
Unit Test DB+DAO (in realtà Integration Test)
DB in uno stato conosciuto
Esecuzione “Unit Test”
Verifica
Nuovo stato del DB
Dati selezionati dal DB
4. Problemi
Problema: DB in uno stato conosciuto ?
Quando DEV1 fa girare i test DEV2 trova dati
diversi ?
Ma io sto usando il dump del DB di prod... dovrei
cancellare tutti i dati per eseguire un test ?
Come riottengo il DB con i dati di prod ?
Come imposto un set di dati conosciuto ?
Come verifico il contenuto di una tabella prima e
5. Soluzioni
Conflitto tra sviluppatori: soluzioni
Un DBMS per sviluppatore
DB Embedded, eseguito in locale
HSQLDB, SQLITE, Derby DB
DBMS come in prod anche in locale
Oracle Express, MySQL, PostgreSQL, …
DBMS centralizzato con un db per ogni sviluppatore
MS SQL Server
prod_db
john_db, susy_db
6. Problemi
Accesso concorrente al DB: soluzioni
Un DB per sviluppatore
DB Embedded, eseguito in locale
HSQLDB, SQLITE, Derby DB
DBMS come in prod anche in locale
Oracle Express, MySQL, PostgreSQL, …
DBMS centralizzato con un db per ogni sviluppatore
MS SQL Server
prod_db
john_db, susy_db
7. Problemi
Set up struttura DB: soluzioni
Scenario evolutivo
Anche gli script SQL fanno parte del sorgente!
Definire il DB sempre attraverso DDL
DB può così essere creato automaticamente
Scenario manutentivo
Dump del DB di prod
DDL per struttura per la creazione del DB
DML per dati da eseguire ad ogni test
8. Problemi
Set up dati db: soluzioni
SQL puro
Esecuzione DML sul DB locale
Esecuzione SQL per estrazione dati di verifca
Verifica programmatica
API
DbUnit
Dataset iniziale
Confronto tra dataset
9. Lezione appresa
DBE
=
?
DB0 DAO DB1
Esecuzione
Set Up Test Verifica