在下面的代碼的問題是,我無法測試dao.add()不使用dao.list()。大小(),反之亦然。如何在不使用「查找」的情況下測試DAO中的「添加」?
此方法是正常還是不正確?如果不正確,如何改進?
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()));
}
}
您是在集成或單元測試之後? – davidfrancis 2012-03-30 22:44:19
你告訴我:)在這種特殊情況下 - 只使用常識似乎更像是對我的集成測試。但是,你知道,畢竟我只是想確保我的DAO工作,就是這樣。 – Xorty 2012-03-31 01:18:19
是的,這是一種痛苦。由於dao具有的依賴性,不確定是否可以結束單元測試。 dao如何工作?我會親自嘗試避免讓你的測試依賴於外部數據庫,並嘗試存根或模擬數據庫訪問層,如其中一個答案中的建議。話雖如此,但它從來沒有像真正的分貝依賴集成測試那樣令人放心。 – davidfrancis 2012-03-31 10:21:18