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