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>