我正在使用Maven构建一个项目,该项目使用Hibernate(和Spring)从数据库中检索数据等。
我在我的项目中为DAO的“测试”扩展了Spring的AbstractTransactionalDataSourceSpringContextTests
,以便可以将一个数据源连接到我的测试类中,以便能够实际运行查询/ Hibernate逻辑来获取数据等。
在其他几个项目中,我与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