Aşağıdaki kodda, dao.add()'u dao.list() .boyutu() kullanmadan ve bunun tersini test edemem.DAO'da "bul" vb. Kullanmadan "ekleme" nasıl test edilir?
Bu yaklaşım normal mi, yanlış mı? Yanlış ise nasıl geliştirilebilir?
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()));
}
}
Entegrasyon veya birim testlerinden sonra mısınız? – davidfrancis
Sen söyle :) Bu özel senaryoda - sadece sağduyu kullanmak bana daha fazla uyum testi gibi görünüyor. Ama bilirsin, sonuçta sadece DAO'mın çalıştığından emin olmak istiyorum, hepsi bu. – Xorty
Evet, bu bir acıdır. Dao'nun sahip olduğu bağımlılık nedeniyle birim testleri ile sonuçlanabileceğinden emin değilsiniz. Dao nasıl çalışıyor? Kişisel olarak testinizi harici bir db'ye bağımlı hale getirmekten kaçınmaya çalışacağım ve cevaplardan birinde önerildiği gibi db erişim katmanını taklit etmeye veya dalga geçmeye çalışacağım. Gerçek bir db bağımlı entegrasyon testi olarak asla güven verici olmadığını söylemiştim. – davidfrancis