Maven Surefire 仅 "default-test" 运行 忽略自定义执行
Maven Surefire only "default-test" run custom executions ignored
我正在使用 maven 3.5.4、maven-surefire-plugin 2.19(我也尝试了 maven-surefire-plugin 2.22 - 结果相同)。
这是我的 POM 的构建部分:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19</version>
<inherited>true</inherited>
<configuration>
<parallel>classes</parallel>
<threadCount>20</threadCount>
</configuration>
<executions>
<execution>
<id>default-test</id>
<configuration>
<excludedGroups>switch-enabled</excludedGroups>
</configuration>
</execution>
<execution>
<id>other-tests</id>
<configuration>
<groups>switch-enabled</groups>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
我有两组单元测试需要分别 运行(由于静态布尔变量,因此我设置了一个 TestNG 组并拥有所有需要打开开关的测试团体)。
Surefire 仅 运行 执行 "default-test" 并忽略其他执行。我也尝试了以下方法,但它也没有用 - 没有测试 运行 而是:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19</version>
<inherited>true</inherited>
<configuration>
<parallel>classes</parallel>
<threadCount>20</threadCount>
</configuration>
<executions>
<execution>
<id>default-test</id>
<configuration>
<skip>true</skip>
</configuration>
</execution>
<execution>
<id>true-tests</id>
<configuration>
<groups>switch-enabled</groups>
</configuration>
</execution>
<execution>
<id>false-tests</id>
<configuration>
<excludedGroups>switch-enabled</excludedGroups>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
我做错了什么?
我对 surefire 插件有同样的问题。我建议您将测试 运行 配置移动到 testng .xml 文件,这将 运行 每个单独设置并且还可以让您为每个配置并行 运行 :
<suite name="Test-Suite">
<test name="Test first set" parallel="20" preserve-order="true">
<classes>
<class name="domain.tests.com.TestA"/>
<class name="domain.tests.com.TestB"/>
// Classes of first set here..
</classes>
</test>
<test name="Test second set" parallel="20" preserve-order="true">
<classes>
<class name="domain.tests.com.TestC"/>
<class name="domain.tests.com.TestD"/>
// Classes of second set here..
</classes>
</test>
</suite>
我最终使用了@AutomatedOwl 建议的 XML 文件方法。我必须创建一个名为 "integration" 的新组,我在 class 级别申请集成测试 classes,因为没有直接的方法来排除 classes TestNG XML 并且我不希望集成测试在万无一失的测试阶段成为 运行。这是我的 TestNG XML:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="TestAll">
<test name="falseTest" parallel="classes" thread-count="20">
<groups>
<run>
<exclude name="switch-enabled" />
<exclude name="integration" />
</run>
</groups>
<packages>
<package name="com.somecomp" />
</packages>
</test>
<test name="trueTest" parallel="classes" thread-count="20">
<groups>
<run>
<include name="switch-enabled" />
<exclude name="integration" />
</run>
</groups>
<packages>
<package name="com.somecomp" />
</packages>
</test>
</suite>
这是我的 POM 的构建部分:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19</version>
<inherited>true</inherited>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
</plugins>
</build>
我正在使用 maven 3.5.4、maven-surefire-plugin 2.19(我也尝试了 maven-surefire-plugin 2.22 - 结果相同)。 这是我的 POM 的构建部分:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19</version>
<inherited>true</inherited>
<configuration>
<parallel>classes</parallel>
<threadCount>20</threadCount>
</configuration>
<executions>
<execution>
<id>default-test</id>
<configuration>
<excludedGroups>switch-enabled</excludedGroups>
</configuration>
</execution>
<execution>
<id>other-tests</id>
<configuration>
<groups>switch-enabled</groups>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
我有两组单元测试需要分别 运行(由于静态布尔变量,因此我设置了一个 TestNG 组并拥有所有需要打开开关的测试团体)。
Surefire 仅 运行 执行 "default-test" 并忽略其他执行。我也尝试了以下方法,但它也没有用 - 没有测试 运行 而是:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19</version>
<inherited>true</inherited>
<configuration>
<parallel>classes</parallel>
<threadCount>20</threadCount>
</configuration>
<executions>
<execution>
<id>default-test</id>
<configuration>
<skip>true</skip>
</configuration>
</execution>
<execution>
<id>true-tests</id>
<configuration>
<groups>switch-enabled</groups>
</configuration>
</execution>
<execution>
<id>false-tests</id>
<configuration>
<excludedGroups>switch-enabled</excludedGroups>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
我做错了什么?
我对 surefire 插件有同样的问题。我建议您将测试 运行 配置移动到 testng .xml 文件,这将 运行 每个单独设置并且还可以让您为每个配置并行 运行 :
<suite name="Test-Suite">
<test name="Test first set" parallel="20" preserve-order="true">
<classes>
<class name="domain.tests.com.TestA"/>
<class name="domain.tests.com.TestB"/>
// Classes of first set here..
</classes>
</test>
<test name="Test second set" parallel="20" preserve-order="true">
<classes>
<class name="domain.tests.com.TestC"/>
<class name="domain.tests.com.TestD"/>
// Classes of second set here..
</classes>
</test>
</suite>
我最终使用了@AutomatedOwl 建议的 XML 文件方法。我必须创建一个名为 "integration" 的新组,我在 class 级别申请集成测试 classes,因为没有直接的方法来排除 classes TestNG XML 并且我不希望集成测试在万无一失的测试阶段成为 运行。这是我的 TestNG XML:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="TestAll">
<test name="falseTest" parallel="classes" thread-count="20">
<groups>
<run>
<exclude name="switch-enabled" />
<exclude name="integration" />
</run>
</groups>
<packages>
<package name="com.somecomp" />
</packages>
</test>
<test name="trueTest" parallel="classes" thread-count="20">
<groups>
<run>
<include name="switch-enabled" />
<exclude name="integration" />
</run>
</groups>
<packages>
<package name="com.somecomp" />
</packages>
</test>
</suite>
这是我的 POM 的构建部分:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19</version>
<inherited>true</inherited>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
</plugins>
</build>