Nếu chức năng của bạn làm điều gì đó thú vị ngoài việc kéo dữ liệu ra khỏi cơ sở dữ liệu, bạn nên trích xuất truy xuất vào một chức năng khác và giả lập nó, để bạn có thể kiểm tra phần còn lại.
Điều này vẫn để lại cho bạn nhiệm vụ kiểm tra quyền truy cập cơ sở dữ liệu. Bạn có thể không thực sự làm một bài kiểm tra đơn vị cho điều đó, bởi vì điều đó sẽ theo định nghĩa không truy cập bất kỳ db nào và bạn chỉ có thể kiểm tra nếu nó gửi câu lệnh sql mà bạn nghĩ, nhưng không phải nếu câu lệnh sql thực sự hoạt động.
Vì vậy, bạn cần có một cơ sở dữ liệu
Bạn có optiones khác nhau:
1) tạo ra một cơ sở dữ liệu cố định cho xét nghiệm như vậy mà không có được thay đổi bởi các cuộc thử nghiệm.
Pro: Khái niệm dễ dàng Con: khó duy trì. Các thử nghiệm trở nên phụ thuộc lẫn nhau, bởi vì chúng dựa vào cùng một dữ liệu. Không có cách nào để kiểm tra nội dung cập nhật, chèn hoặc xóa (hãy để một mình DDL)
2) tạo cơ sở dữ liệu trong khi kiểm tra. Bây giờ bạn có hai vấn đề: thiết lập cơ sở dữ liệu cho thử nghiệm và điền nó với dữ liệu.
Thiết lập:
1) có một máy chủ cơ sở dữ liệu đang chạy, với một người dùng/schema/cơ sở dữ liệu cho erveryone ai cần để chạy thử nghiệm (ít nhất devs + ci-server). Giản đồ có thể được tạo bằng cách sử dụng các công cụ như ngủ đông hoặc các tập lệnh bạn sử dụng để triển khai.
Hoạt động tốt, nhưng làm cho các DBA cũ trở nên điên rồ. Ứng dụng không được phụ thuộc vào tên lược đồ. Bạn cũng sẽ gặp phải vấn đề khi bạn có nhiều hơn một lược đồ được ứng dụng sử dụng. Thiết lập này khá chậm. Nó có thể giúp đỡ để đưa vào đĩa nhanh. Giống như đĩa RAM
2) Có cơ sở dữ liệu trong bộ nhớ. Dễ dàng bắt đầu từ mã và nhanh chóng. Nhưng trong hầu hết các trường hợp, nó sẽ hoạt động giống như cơ sở dữ liệu sản xuất của bạn. Điều này là ít quan tâm nếu bạn sử dụng một cái gì đó mà cố gắng để che giấu sự khác biệt. Tôi thường sử dụng một cơ sở dữ liệu bộ nhớ cho giai đoạn xây dựng đầu tiên và điều thực sự trong giai đoạn thứ hai.
Loading the TestData
1) người bảo tôi dùng DBUnit. Tôi không tin rằng nó có vẻ là rất nhiều XML và khó để duy trì khi cột hoặc ràng buộc thay đổi.
2) Tôi thích mã ứng dụng thông thường hơn. (Java + Hibernate) trong trường hợp của tôi, nhưng mã viết dữ liệu của bạn vào cơ sở dữ liệu trong sản xuất nên trong nhiều trường hợp phù hợp để viết dữ liệu thử nghiệm cho thử nghiệm của bạn. Nó giúp có một API đặc biệt nhỏ che giấu các chi tiết đáp ứng tất cả khóa và nội dung ngoài: http://blog.schauderhaft.de/2011/03/13/testing-databases-with-junit-and-hibernate-part-1-one-to-rule-them/
Điều này có thể thú vị: http://blog.schauderhaft.de/2011/03/13/testing-databases-with-junit-and -hibernate-part-1-one-to-rule-them/ –