Chúng tôi sử dụng kép persistence.xml file cho runtimes sản xuất và thử nghiệm nhưng nó là một classpath liên quan chỉ vấn đề (chúng tôi sử dụng Eclipse nhưng không dựa nhiều vào các plugin WTP). Sự khác biệt duy nhất giữa hai là phiên bản sản xuất không chứa các định nghĩa thực thể.
Chúng tôi không sử dụng khung mocking để kiểm tra JPA vì điều này sẽ không thêm bất kỳ giá trị nào vào các thử nghiệm của chúng tôi. Các thử nghiệm chạy truy cập dữ liệu thực với JPA để nói chuyện với cơ sở dữ liệu PostgreSQL.
Cách tiếp cận thử nghiệm của chúng tôi dựa trên khung kiểm tra Spring cho lớp kiên trì: thử nghiệm trong giao dịch. Ứng dụng của chúng ta dựa trên Spring nhưng cách tiếp cận này cũng có thể sử dụng được cho các ứng dụng tùy ý muốn tận dụng các lớp thử nghiệm Spring. Bản chất là mỗi thử nghiệm chạy trong một giao dịch duy nhất không bao giờ cam kết và ở cuối (trong tearDown) nó được tự động cuộn lại. Điều này giải quyết vấn đề ô nhiễm dữ liệu và kiểm tra sự phụ thuộc theo cách không phô trương và minh bạch.
Khung kiểm tra Spring là linh hoạt để cho phép thử nghiệm nhiều giao dịch nhưng đây là những trường hợp đặc biệt chiếm không quá 10% kiểm tra.
Chúng tôi vẫn sử dụng legacy support for JUnit 3.8 nhưng mới Spring TestContext Framework cho JUnit 4 trông rất hấp dẫn.
Để thiết lập dữ liệu thử nghiệm trong giao dịch, chúng tôi sử dụng lớp tiện ích nội bộ để xây dựng các thực thể nghiệp vụ. Kể từ khi nó được chia sẻ giữa tất cả các bài kiểm tra chi phí để duy trì và hỗ trợ nó là rất nhiều cân nhắc bởi những lợi ích của việc có cách tiêu chuẩn và đáng tin cậy để thiết lập dữ liệu thử nghiệm.
Spring DI giúp kiểm tra ngắn gọn và tự mô tả nhưng không phải là tính năng quan trọng.
Loại thử nghiệm bạn đã đề cập không phải là thử nghiệm đơn vị. Tôi nghĩ đó là thử nghiệm tích hợp kiểu. Khi bạn viết một bài kiểm tra đơn vị bạn kiểm tra một lớp học với tất cả các phụ thuộc được mô phỏng. Vì vậy, sử dụng một cơ sở dữ liệu thực (ngay cả trong bộ nhớ cơ sở dữ liệu) trong thử nghiệm đơn vị là không hợp lệ. –
Nó không phải là một thử nghiệm tích hợp đầy đủ. Nó hợp lệ! Nó không phải là thử nghiệm đơn vị. – Gilberto