我有一个使用 Maven 构建的项目,它使用 Hibernate(和 Spring)从数据库等中检索数据。
我在项目中对 DAO 的“测试”扩展了 Spring AbstractTransactionalDataSourceSpringContextTests
,以便可以将 DataSource 连接到我的测试类中,以便能够实际运行查询/休眠逻辑、获取数据等。
在其他几个项目中,我将这些类型的测试与 HSQL 数据库(内存中或指向文件)结合使用,以便能够在不依赖外部数据库的情况下有效地测试实际的数据库查询逻辑。这很好用,因为它避免了任何外部依赖,并且在运行测试之前数据库的“状态”(每个测试都包含在一个回滚的事务中)是明确定义的。
我很好奇使用 Maven 组织这些测试的最佳方式,这实际上是一种松散的集成测试。将这些测试保留在 中感觉有点脏src/test/java
,但从我所读到的内容来看,使用 Maven 组织集成测试似乎并没有一致的策略或实践。
从我目前阅读的内容来看,似乎我可以使用Failsafe 插件(或 Surefire 的第二个实例)并将其绑定到integration-test
阶段,并且我还可以绑定自定义启动或关闭逻辑(例如启动/停止 HSQL 实例)到pre-integration-test
或post-integration-test
。但是,这真的是最好的方法吗?
所以我的问题基本上是 - 用 Maven 组织这个的普遍接受的最佳实践是什么?我无法在文档中找到任何一致的答案。
我想要的是:
test
将单元测试与集成测试分开,因此在该阶段只运行单元测试- 将自定义启动/关闭逻辑绑定到
pre-integration-test
和post-integration-test
- 将来自集成测试的报告与单元测试 Surefire 报告合并/呈现