Trong mã sau vấn đề là, tôi không thể kiểm tra dao.add() mà không sử dụng dao.list(). Size() và ngược lại.Làm thế nào để kiểm tra "thêm" trong DAO mà không cần sử dụng "tìm" vv?
Phương pháp này có bình thường hoặc không chính xác không? Nếu không chính xác, làm thế nào nó có thể được cải thiện?
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()));
}
}
Bạn sau khi tích hợp hoặc kiểm tra đơn vị? – davidfrancis
Bạn cho tôi biết :) Trong trường hợp cụ thể này - chỉ sử dụng cảm giác thông thường có vẻ giống như thử nghiệm tích hợp với tôi. Nhưng bạn biết, sau khi tất cả tôi chỉ muốn đảm bảo rằng DAO của tôi hoạt động, đó là nó. – Xorty
Vâng, đó là một nỗi đau. Không chắc chắn bạn có thể kết thúc với các bài kiểm tra đơn vị vì sự phụ thuộc mà dao có. Con dao làm việc như thế nào? Cá nhân tôi sẽ cố gắng tránh làm cho thử nghiệm của bạn phụ thuộc vào một db bên ngoài và cố gắng khai thác hoặc giả mạo lớp truy cập db, như được đề xuất trong một trong các câu trả lời. Có nói rằng nó không bao giờ yên tâm như một bài kiểm tra tích hợp phụ thuộc db thực sự. – davidfrancis