使用Maven进行集成测试的最佳实践?

14 浏览
0 Comments

使用Maven进行集成测试的最佳实践?

我有一个项目正在使用Maven构建,其中使用Hibernate(和Spring)从数据库中检索数据等。我项目中的DAO的“测试”扩展了Spring的AbstractTransactionalDataSourceSpringContextTests,以便将DataSource连接到我的测试类中,以便能够实际运行查询/ Hibernate逻辑来获取数据等。在其他几个项目中,我与HSQL数据库(内存中或指向文件)一起使用这些类型的测试,以便能够高效地测试实际的数据库查询逻辑,而不依赖于外部数据库。这个方法很好,因为它避免了任何外部依赖,并且在运行测试之前的数据库“状态”(每个测试都包装在回滚的事务中)是明确定义的。

不过,我对使用Maven来组织这些测试的最佳方法很好奇。把这些测试放在src/test/java中感觉有点不太好,但从我所读的资料来看,没有一致的策略或做法来组织Maven中的集成测试。

从我到目前为止读到的资料来看,似乎可以使用Failsafe插件(或Surefire的第二个实例),并将其绑定到integration-test阶段,还可以将自定义的启动/关闭逻辑(例如启动/停止HSQL实例)绑定到pre-integration-testpost-integration-test。但是,这真的是最好的方法吗?

所以我的问题基本上是 - 在使用Maven进行组织时,什么是一般公认的最佳实践?我很难在文档中找到任何一致的答案。

我想要的是:

  • 将单元测试与集成测试分开,只有在test阶段运行单元测试
  • 能够将自定义的启动/关闭逻辑绑定到pre-integration-testpost-integration-test
  • 将集成测试的报告与单元测试Surefire报告合并/展示
0