我有一个正在使用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报告合并/提交