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

标签 java testing maven-2 integration-testing

我有一个使用 Maven 构建的项目,它使用 Hibernate(和 Spring)从数据库等中检索数据。

我的项目中 DAO 的“测试”扩展了 Spring 的 AbstractTransactionalDataSourceSpringContextTests,以便可以将 DataSource 连接到我的测试类中,以便能够实际运行查询/hibernate 逻辑,以获取数据等。

在其他几个项目中,我将这些类型的测试与 HSQL 数据库(内存中或指向文件)结合使用,以便能够在不依赖外部数据库的情况下有效地测试实际的数据库查询逻辑。这很好用,因为它避免了任何外部依赖,并且在运行测试之前数据库的“状态”(每个测试都包含在一个回滚的事务中)是明确定义的。

我很好奇用 Maven 组织这些测试的最佳方式,这实际上是一种松散的集成测试。将这些测试保存在 src/test/java 中感觉有点脏,但从我读到的内容来看,似乎并没有一致的策略或实践来组织与 Maven 的集成测试。

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

所以我的问题基本上是 - 用 Maven 组织这个的普遍接受的最佳实践是什么?我在文档中找不到任何一致的答案。

我想要的是:

  • 将单元测试与集成测试分开,因此在 test 阶段只运行单元测试
  • 能够将自定义启动/关闭逻辑绑定(bind)到 pre-integration-testpost-integration-test
  • 将来自集成测试的报告与单元测试 Surefire 报告合并/呈现

最佳答案

一个非常简单的方法是使用 JUnit 类别。

然后,您可以在测试阶段轻松运行一些测试,在集成测试阶段运行另一个测试。

只需几分钟,只需 3 个步骤。

  1. 定义一个标记界面
  2. 注释你想要拆分的类
  3. 配置 Maven 插件。

这里给出了一个完整的例子。 https://stackoverflow.com/a/10381662/1365383

关于java - 使用 Maven 进行集成测试的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1228709/

相关文章:

java - 第谷跳过测试

maven-2 - 如何查看 Maven pom.xml 文件的传递依赖关系?

java - 变量 "context"可能尚未初始化,java JNDI util

testing - "VerifyTextPresent"为 Selenium IDE 返回不正确的结果

Azure Web App 的性能测试

testing - 谷歌浏览器如何影响开发网络应用程序的产品所有者?

Maven:如何在测试阶段包含依赖项并在集成测试阶段排除它?

java - [HY000][1215] 无法添加外键约束

java - 更改关键不在集合 B 中的 map 元素

java - 安卓 & 蓝牙 & Arduino