Có một cách cơ sở dữ liệu-agnostic để làm điều này nếu bạn đang sử dụng Spring cùng với Hibernate.
Hãy chắc chắn rằng bối cảnh ứng dụng sẽ được tạo ra/bị phá hủy trước/sau mỗi phương pháp thử nghiệm:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"classpath*:application-context-test.xml"})
@TestExecutionListeners({DirtiesContextTestExecutionListener.class,
DependencyInjectionTestExecutionListener.class})
@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
public abstract class AbstractTest {
}
Hướng dẫn, Hibernate để tự động tạo ra các sơ đồ khởi động và để thả các schema trên shutdown:
hibernate.hbm2ddl.auto = create-drop
Bây giờ trước mỗi thử nghiệm
- ngữ cảnh ứng dụng được tạo và yêu cầu d đậu xuân được tiêm (mùa xuân)
- cấu trúc cơ sở dữ liệu được tạo (hibernate)
- việc nhập.sql được thực hiện nếu có (ngủ đông)
và sau mỗi lần kiểm tra
- bối cảnh ứng dụng bị phá hủy (mùa xuân)
- database schema được giảm (hibernate).
Nếu bạn đang sử dụng giao dịch, bạn có thể muốn thêm TransactionalTestExecutionListener
.
Theo http://docs.oracle.com/javadb/10.8.1.2/getstart/rwwdactivity3.html làm ví dụ, thay vì chỉ đơn giản là bắt và loại bỏ 'SQLException', có thể tốt hơn nếu loại bỏ nó chỉ khi' e.getSQLState() .equals ("08006") ' – Raedwald