当前位置: 首页 > 面试题库 >

使用maven-failsafe-plugin时,集成测试应存储在哪里?

艾灿
2023-03-14
问题内容

我是否必须将集成测试src/test与其余的单元测试放在一起,并仅通过诸如*Integr*Test,的模式将它们区分开来*ITTest,或者它们可以存在src/it开发Maven插件并使用时就是这种情况maven- invoker-plugin)?

我之所以这样问是因为,对我来说,如果单元测试和集成测试都放在同一位置,那看起来还不够干净(即使它们是通过Maven配置文件控制的)。


问题答案:

默认情况下,第一个maven-fails-plugin会在另一个生命周期阶段(集成测试)中运行,就像maven-surefire-
plugin(测试)一样。此外,如果您想检查集成测试是否失败,则可以将maven-failsafe-plugin配置verify为在post- integration-test测试阶段运行目标。可以自由配置。

我想到一个问题。您有10个模块,现在想进行集成测试?它们属于哪个模块?最好是有一个单独的模块,因为它们不属于10个模块。

除此之外,已经在默认生命周期中配置了maven-surefire-
plugin。是的,一个补充目标是一个主意,但这会使用户混淆使用相同关系的插件。因此,关注点分离在这里很重要。除了整个默认配置外…这些插件共享更大的代码库,但有区别…

Tunaki已经提到的是pre-integration-test,用于设置服务器等之integration- test类的东西,以及分阶段关闭服务/服务器之类的东西post-integration-test。这在单元测试中永远不会发生。

使用单独的模块通常可以更轻松地设置IT,这意味着与单元测试相比,它们具有不同的依赖项(类路径)。例如Arquillian.org之类的东西从未在单元测试中使用过。这不能在单个模块中处理…还有一件好事是这里的关注点分离。

此外,默认情况下无法对集成测试进行并行化,而按定义可以进行单元测试,否则就不能进行单元测试。

那么文件夹的布局呢?在集成测试模块中,您可以简单地使用src/test/java文件夹,这意味着您不需要补充配置等(例如,通过build-helper-
maven-plugin等),这使它更容易并且遵循配置范式上的更多约定。

不要忘记,您可以更好地控制构建(CI)中正在运行的内容。

还有另一个重要提示。通常,集成测试通常与基础结构相关,因此有时忽略那些可以通过使用checkmaven-failsafe-
plugin目标简单处理的故障可能会有用。

可以在此处找到IT模块的示例。



 类似资料:
  • 我有以下问题,无法在其他地方找到任何答案: 我正在使用https://github.com/joelittlejohn/embedmongo-maven-plugin用于在预集成测试阶段启动mongo db服务器,然后在指定端口上运行与mongo db交互的集成测试。然而,对于插件的原始版本,我不得不在插件配置中硬编码端口,这可能会与在同一台机器上运行的其他进程发生冲突,并有效地拒绝使用相同端口的

  • 我正在进行集成测试,但由于某些原因,maven failsafe插件没有运行。下面是用于集成测试的概要文件。测试类的名称是AppSmokeTest。java@测试正在用于测试。 我看过多篇关于这个问题的帖子 我试着在build标签中运行插件。 我尝试添加 我也尝试过运行maven failsafe插件2.18.1版,因为我看到有人认为它对他们有用。

  • 我将和作为测试依赖项: 我的集成测试命名正确(在、或之后,默认情况下由Failsafe包含,默认情况下由Surefire排除)。 有什么方法可以使用JUnit5测试和Failsafe吗?

  • 下面是我真正的pom的一部分。集成测试的测试已经在@Test注释中分配了一个“集成”组。为了做小测试,我在测试阶段没有排除“集成”组。 当使用例如mvn验证或mvn安装构建时,集成测试在测试阶段执行,但不是验证或集成测试阶段。考试数量保持为0。不知何故,他们没有被捡起来。有人知道可能出了什么问题吗? 更新:将TestNG作为依赖项添加到故障保护插件没有帮助

  • 各位,我使用插件cargo-maven2-plugin在Tomcat8上运行集成测试(等待tomcat8-maven-plugin) 不幸的是,当我停止容器时,我有这样一个堆栈:

  • 我是新的弹簧靴,做了我的第一个实体。如何测试存储库?我使用的是本地MySQL数据库。那么第一步就是嘲弄数据库? 而我的存储库只是扩展了Jparepository。 我得到的错误是java.lang.IllegalStateException:未能加载ApplicationContext。还有一点:无法用嵌入式数据库替换DataSource进行测试。如果您想要一个嵌入式数据库,请在类路径上放置一个受