Maven surefire 插件不止一次触发测试套件
Maven surefire plugin triggers the testsuite more than once
我有两个测试套件 A.xml 和 B.xml。
这是其中之一的示例。
<!-- URL Details -->
<parameter name="applicationHostname" value="localhost" />
<parameter name="applicationProtocol" value="http" />
<parameter name="applicationPort" value="8080" />
<parameter name="testDelay" value="0" />
<test verbose="2" name="TestSuiteA" annotations="JDK"
preserve-order="true">
<parameter name="testDataSource" value="Data.json" />
<classes>
<class name="package.SuiteConfiguration" />
<class
name="package.functionalTestAppStart.AppStarter" />
</classes>
</test>
这里AppStarter是被触发的springboot应用
这是我对应的 POM.xml
片段
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.19.1</version>
<executions>
<execution>
<id>IT</id>
<phase>test</phase>
<goals>
<goal>integration-test</goal>
</goals>
<configuration>
<skip>false</skip>
<suiteXmlFiles>
<suiteXmlFile>src/test/resources/suites/FT_TEST_SUITE.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</execution>
<execution>
<id>verify</id>
<phase>verify</phase>
<goals>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
这里 FT_TEST_SUITE.xml 是父测试套件,它只触发其他两个测试套件。
<suite-files>
<suite-file path="TESTSUITE_A.xml" />
<suite-file path="TESTSUITE_B.xml" />
</suite-files>
当我构建我的 Maven 项目时 "mvn clean install",测试套件被触发了 3 次。如何解决这个问题呢?
谢谢!
将配置部分移至依赖配置并完全删除执行(因为 Spring Boot 的较新版本已经定义了此类默认设置):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>src/test/resources/suites/FT_TEST_SUITE.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
我发现 解决方案 稍作改动。在 failsafe_version 中将版本更改为 2.13 并将 phase 更改为 integration-test 完成了任务。
这是我更新的 POM.xml 片段。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.13</version>
<executions>
<execution>
<id>IT</id>
<phase>integration-test</phase>
<goals>
<goal>integration-test</goal>
</goals>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>src/test/resources/suites/FT_TEST_SUITE.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</execution>
<execution>
<id>verify</id>
<phase>verify</phase>
<goals>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
感谢大家的回复!
我有两个测试套件 A.xml 和 B.xml。 这是其中之一的示例。
<!-- URL Details -->
<parameter name="applicationHostname" value="localhost" />
<parameter name="applicationProtocol" value="http" />
<parameter name="applicationPort" value="8080" />
<parameter name="testDelay" value="0" />
<test verbose="2" name="TestSuiteA" annotations="JDK"
preserve-order="true">
<parameter name="testDataSource" value="Data.json" />
<classes>
<class name="package.SuiteConfiguration" />
<class
name="package.functionalTestAppStart.AppStarter" />
</classes>
</test>
这里AppStarter是被触发的springboot应用
这是我对应的 POM.xml
片段 <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.19.1</version>
<executions>
<execution>
<id>IT</id>
<phase>test</phase>
<goals>
<goal>integration-test</goal>
</goals>
<configuration>
<skip>false</skip>
<suiteXmlFiles>
<suiteXmlFile>src/test/resources/suites/FT_TEST_SUITE.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</execution>
<execution>
<id>verify</id>
<phase>verify</phase>
<goals>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
这里 FT_TEST_SUITE.xml 是父测试套件,它只触发其他两个测试套件。
<suite-files>
<suite-file path="TESTSUITE_A.xml" />
<suite-file path="TESTSUITE_B.xml" />
</suite-files>
当我构建我的 Maven 项目时 "mvn clean install",测试套件被触发了 3 次。如何解决这个问题呢? 谢谢!
将配置部分移至依赖配置并完全删除执行(因为 Spring Boot 的较新版本已经定义了此类默认设置):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>src/test/resources/suites/FT_TEST_SUITE.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
我发现 解决方案 稍作改动。在 failsafe_version 中将版本更改为 2.13 并将 phase 更改为 integration-test 完成了任务。 这是我更新的 POM.xml 片段。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.13</version>
<executions>
<execution>
<id>IT</id>
<phase>integration-test</phase>
<goals>
<goal>integration-test</goal>
</goals>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>src/test/resources/suites/FT_TEST_SUITE.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</execution>
<execution>
<id>verify</id>
<phase>verify</phase>
<goals>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
感谢大家的回复!