无法理解Spring Boot如何管理与Maven的集成测试。是否使用故障安全插件? - java

我试图不理解spring boot如何管理集成测试。

基本上,在任何具有集成测试的项目中,对此负责的插件都是maven failsafe 插件。默认情况下,它将执行所有带有后缀和IT 的类。例如:MyServiceIT.java

好吧,这是第一个问题。我发现的大多数运行集成测试的Spring Boot示例(甚至在官方文档或Spring博客中)都包含sufix Test 。因此,我知道它们将由maven surefire 插件运行,这是集成测试所不希望的。

但是混乱还没有结束。

如果目标是运行集成测试,那么Spring Boot Maven插件文档says nothing about the failsafe plugin。但是,如果您想跳过它们,请参阅文档中的the failsafe plugin appears。

现在,我在 Spring 启动集成测试中使用了带有后缀和IT 的Maven故障安全插件,但在surefire上却忽略了它们:

<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的这种“奇怪”设置如何用于集成测试?

¹。声纳能够获得他的测试报道,而我的测试却没有。我们正在使用Cobertura maven插件。我认为这是因为他的测试是在surefire插件上运行的,但是在故障安全插件上,我需要在pom.xml以及声纳上进行额外的配置。

参考方案

我认为您不需要使用故障安全插件。 spring boot docs告诉您使用的spring-boot-starter-parent参考包含任何人甚至可以考虑使用的所有内容,包括厨房水槽。

故障安全插件是进行集成测试的一种方法。剩下一些手动配置。

但是,如果您使用的是Spring Boot,则应使用Spring Boot随附的内置功能。毕竟,这就是使用Spring Boot的全部重点。他们为您做很多。我怀疑您在Spring Boot文档中没有看到太多关于Spring文档中提到的故障安全插件的原因是,他们不希望人们使用它。

请参阅以下教程。这很简单,但这是一个很好的起点:

Baeldung Tutorial on Spring Boot Testing

Java中的<<或>>>是什么意思? - java

This question already has answers here: Closed 7 years ago. Possible Duplicate: What does >> and >>> mean in Java?我在一些Java代码中遇到了一些陌生的符号,尽管代码可以正确编译和运行,但对于括号在此代码中的作用却感…

菱形运算符<>是否等于<?> - java

我在util.TreeSet类中发现,其中一个构造函数正在使用具有空泛型类型的新TreeMap调用另一个构造函数。 public TreeSet(Comparator<? super E> comparator) { this(new TreeMap<>(comparator)); } new TreeMap<>是什么意思…

Spring Boot删除Web应用程序的Whitelabel错误页面 - java

我有一个spring boot Web应用程序,正在将它作为war文件部署在tomcat中。我不希望用户显示白色标签错误页面。我对此有所进步,但需要将其重新定向到错误页面。下面的代码是/ error白色标签错误页面是自定义错误消息。但是我希望将其重定向到我的Web应用程序资源中模板文件夹下的error.jsp或error.html。我尝试将@RestCont…

Spring Boot索引未加载 - java

我有一个Spring Boot应用程序。我没有使用@EnableWebMvc,并且我的资源在src/main/resources/static文件夹中。当我尝试加载localhost:8080/ui/时,它只是下载一个随机文件(类型:八位字节流)。如果我直接使用/ui/index.html则可以。我也在使用WebSecurityConfigurerAdapt…

Spring MVC拦截器映射问题 - java

我有这段XML:<mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/statics/**" /> <bean class="com.company.website.servlet.StaticsHandlerIntercept…