如何使用maven surefire插件分离单元测试和集成测试执行?

时间:2020-05-14 08:40:41

标签: cucumber maven-surefire-plugin

我有用junit编写的单元测试和黄瓜集成测试。我正在尝试将单元测试和集成测试执行分开。我知道这个问题已经存在。我在互联网上尝试了很多著作,但没有帮助。 Atm我只能从IDE而不是CLI进行黄瓜测试。 “ mvn test”命令仅执行单元测试,而不执行集成测试。请帮忙。

     mvn test -Dtest=RunCucumberIntegrationTest -Dcucumber.options="-tags @integration"
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <version>${failsafe-plugin.version}</version>
        <executions>
          <execution>
            <goals>
              <goal>integration-test</goal>
              <goal>verify</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>${surefire-plugin.version}</version>
        <executions>
          <execution>
            <id>default-test</id>
            <goals>
              <goal>test</goal>
            </goals>
            <phase>test</phase>
            <configuration>
              <excludes>
                <exclude>**/RunCucumberIntegrationTest.java</exclude>
              </excludes>
              <includes>
                <include>**/*Test.java</include>
                <include>**/*Tests.java</include>
              </includes>
            </configuration>
          </execution>
          <execution>
            <id>integration-tests</id>
            <phase>integration-test</phase>
            <goals>
              <goal>test</goal>
            </goals>
            <configuration>
              <includes>
                <include>**/RunCucumberIntegrationTest.java</include>
              </includes>
            </configuration>
          </execution>
        </executions>
      </plugin>

1 个答案:

答案 0 :(得分:0)

这是示例pom.xml文件。我可以根据需要执行任何配置文件。

 <project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.gtihub.frostyaxe</groupId>
        <artifactId>StackOverflow-61781205</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
            </dependency>
            <dependency>
                <groupId>org.testng</groupId>
                <artifactId>testng</artifactId>
                <version>7.1.0</version>
            </dependency>
        </dependencies>

        <profiles>

            <profile>
                <id>junit</id>
                <build>
                    <plugins>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-surefire-plugin</artifactId>
                            <version>3.0.0-M4</version>
                            <dependencies>
                                <!-- Force using the latest JUnit 47 provider -->
                                <dependency>
                                    <groupId>org.apache.maven.surefire</groupId>
                                    <artifactId>surefire-junit47</artifactId>
                                    <version>3.0.0-M4</version>
                                </dependency>
                            </dependencies>
                            <configuration>
                                <parallel>methods</parallel>
                                <threadCount>10</threadCount>
                                <configuration>
                                    <includes>
                                        <include>${project.basedir}/src/test/java/unit/testclasses/*.java</include>
                                        <exclude>${project.basedir}/src/test/java/integration/testclasses/*.java</exclude>
                                    </includes>
                                </configuration>
                            </configuration>

                        </plugin>
                    </plugins>
                </build>
            </profile>

            <profile>
                <id>testng</id>
                <build>
                    <plugins>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-surefire-plugin</artifactId>
                            <version>3.0.0-M4</version>
                        </plugin>
                    </plugins>
                </build>
            </profile>

        </profiles>
    </project>