我有我使用Maven构建一个项目,该项目使用Hibernate(和Spring)从数据库中检索数据等使用Maven进行集成测试的最佳做法?
我的“测试”为我的项目中的DAO扩展Spring的AbstractTransactionalDataSourceSpringContextTests
,这样一个数据源可以被连接到我测试的类中,以便能够实际运行查询/休眠逻辑,获取数据等。
在其他几个项目中,我使用这些类型的测试与HSQL数据库 - 内存或指向文件)能够高效地测试实际的数据库查询逻辑而不依赖于外部数据库。这很好,因为它避免了任何外部依赖和运行测试之前数据库的“状态”(每个测试都被包装在一个回退的事务中)。
我很好奇,但有关组织这些测试,这是真正的集成测试松散的味道,与Maven的最佳途径。将这些测试保存在src/test/java
中感觉有点肮脏,但从我读过的内容来看,这似乎没有一个与Maven一起组织集成测试的一致策略或实践。
从我目前阅读的内容来看,似乎我可以使用Failsafe plugin(或Surefire的第二个实例)并将其绑定到integration-test
阶段,并且我还可以绑定自定义启动或关闭逻辑(如用于启动/停止HSQL实例)至pre-integration-test
或post-integration-test
。但是,这真的是最好的方法吗?
所以我的问题基本上就是 - 什么是对与Maven组织这次普遍接受的最佳做法?我无法在文档中找到任何一致的答案。
我想是:从集成测试
- 独立的单元测试,所以只有单元测试在
test
阶段 - 自定义开机/关机逻辑结合
pre-integration-test
的能力运行,post-integration-test
- 已经从集成的测试报告合并/带有单元测试神火报告
移动集成测试中一个单独的项目并将单元测试与源代码保持在同一项目中。 – 2014-02-06 13:59:03