gpt4 book ai didi

java - 单元测试在集成测试阶段执行,即使在排除它们之后

转载 作者:行者123 更新时间:2023-11-30 08:34:12 24 4
gpt4 key购买 nike

我的 Maven 应用程序中有一个单元测试 (ProductDaoTest.java) 和一个集成测试 (ProductDaoIT.java)。

我想在 mvn verify 期间只执行集成测试命令调用,但即使在使用 <exclude> 排除它之后,单元测试也会被执行maven-failsafe-plugin 中的标签配置。

我该如何解决这个问题?

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<excludes>
<exclude>**/*Test.java</exclude>
</excludes>
</configuration>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>

更新的 POM(带有解决方案):

 <!-- For skipping unit tests execution during execution of IT's -->
<profiles>
<profile>
<id>integration-test</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<!-- Skips UTs -->
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
<!-- Binding the verify goal with IT -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.19.1</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>5000</port>
<path>${project.artifactId}</path>
</configuration>
<executions>
<execution>
<id>start-tomcat</id>
<phase>pre-integration-test</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<fork>true</fork>
</configuration>
</execution>
<execution>
<id>stop-tomcat</id>
<phase>post-integration-test</phase>
<goals>
<goal>shutdown</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>

mvn clean install - 默认只运行单元测试

mvn clean install -Pintegration-test - 默认情况下只运行集成测试

最佳答案

在 Maven 中,test 步骤在生命周期中的 verify 步骤之前。
所以如果你不跳过这一步,它一定会执行。

如果你想跳过测试,要么像 khmarbaise 建议的那样使用 -Dmaven.test.skip=tr‌ ue,要么为 IT 创建一个专用的 Maven 配置文件,你将在其中忽略单元测试方式:

      <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>

通常,您会为集成测试创建一个 Maven 配置文件,因此如果是这种情况,将所有配置集中在一个地方比分散它要好。

关于java - 单元测试在集成测试阶段执行,即使在排除它们之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38958517/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com