Nel seguente codice il problema è che non riesco a testare dao.add() senza utilizzare dao.list(). Size() e viceversa.Come testare "aggiungi" in DAO senza utilizzare "trova" ecc.?
Questo approccio è normale o errato? Se non è corretto, come può essere migliorato?
public class ItemDaoTest {
// dao to test
@Autowired private ItemDao dao;
@Test
public void testAdd() {
// issue -> testing ADD but using LIST
int oldSize = dao.list().size();
dao.add(new Item("stuff"));
assertTrue (oldSize < dao.list().size());
}
@Test
public void testFind() {
// issue -> testing FIND but using ADD
Item item = new Item("stuff")
dao.add(item);
assertEquals(item, dao.find(item.getId()));
}
}
Sei dopo l'integrazione o test di unità? – davidfrancis
Mi dici :) In questo particolare scenario, usare solo il buon senso sembra più un test di integrazione per me. Ma sai, dopotutto voglio solo assicurarmi che il mio DAO funzioni, basta. – Xorty
Sì, è un dolore. Non sei sicuro di poter finire con i test unitari a causa della dipendenza che ha il dao. Come funziona il dao? Cercherò personalmente di evitare che il tuo test dipenda da un db esterno e tenti di stubare o deridere il livello di accesso db, come suggerito in una delle risposte. Detto questo, non è mai così rassicurante come un vero test di integrazione dipendente da db. – davidfrancis