无法理解 Spring Boot 如何使用 maven 管理集成测试。它是不是使用故障安全插件?
Posted
技术标签:
【中文标题】无法理解 Spring Boot 如何使用 maven 管理集成测试。它是不是使用故障安全插件?【英文标题】:Can't understand how Spring Boot manage integration tests with maven. Is it uses failsafe plugin or not?无法理解 Spring Boot 如何使用 maven 管理集成测试。它是否使用故障安全插件? 【发布时间】:2018-06-21 19:13:24 【问题描述】:我试图理解 Spring Boot 如何管理集成测试。
基本上,在任何具有集成测试的项目中,对此负责的插件是 maven failsafe 插件。默认情况下,它会执行所有带有 IT 后缀的类。例如:MyServiceIT.java
。
嗯,这是第一个问题。我发现的大多数 Spring Boot 运行集成测试的示例(甚至在官方文档或 Spring 博客中)测试类都有后缀 Test。所以,我知道它们将由 maven surefire 插件运行,这对于集成测试来说是不可取的。
但混乱还没有结束。
spring boot maven 插件文档says nothing about the failsafe plugin 如果目标是运行集成测试。但是,如果您想跳过它们,请在文档中查看the failsafe plugin appears。
目前,我在我的 Spring Boot 集成测试中使用带有后缀 IT 的 maven 故障安全插件,但肯定会忽略它们:
<plugin>
<!-- for unit tests -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<excludes>
<exclude>**/*IT.java</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<!--for integrations tests-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<configuration>
<skipITs>$skipITs</skipITs>
</configuration>
</plugin>
但另一位同事在他的 Spring Boot 集成测试(在另一个项目中)中使用了后缀 Test
,并声称这是正确的后缀¹。
所以...我做错了什么? Spring Boot 的这种“奇怪”设置如何用于集成测试?
¹。 Sonar 能够获得他的测试覆盖率,而我的测试没有。我们正在使用 Cobertura maven 插件。我认为原因是他的测试是在surefire插件上运行的,但是在故障安全插件上我需要在pom.xml上进行额外配置,也许还需要在Sonar上。
【问题讨论】:
这个 Spring 网站也使用您的方法解决了这个问题:[使用 Maven Cargo 插件进行集成测试] (baeldung.com/integration-testing-with-the-maven-cargo-plugin) 所以基本上,您没有错。 【参考方案1】:我认为您不需要使用故障安全插件。 Spring Boot 文档告诉您使用的 spring-boot-starter-parent 参考包含任何人甚至可以考虑使用的所有内容,包括其中的厨房水槽。
故障安全插件是进行集成测试的一种方法。这会留下一些手动配置。
但如果您使用的是 spring boot,您应该使用 spring boot 附带的内置工具。毕竟这就是使用弹簧靴的全部意义所在。他们为你做了很多。我怀疑您在 Spring Boot 文档中没有看到太多关于 Spring 文档中提到的故障安全插件的原因是他们不希望人们使用它。
请参阅以下教程。这很简单,但它是一个很好的起点:
Baeldung Tutorial on Spring Boot Testing
【讨论】:
以上是关于无法理解 Spring Boot 如何使用 maven 管理集成测试。它是不是使用故障安全插件?的主要内容,如果未能解决你的问题,请参考以下文章
由于maven插件错误,spring boot maven项目未编译
无法理解 JWT 和 Java (Spring Boot)。这个应用程序安全吗?