代码之家  ›  专栏  ›  技术社区  ›  Shehan Simen

从pom中排除测试文件夹不起作用

  •  0
  • Shehan Simen  · 技术社区  · 5 年前

    我有两套测试。一个用于junit测试,另一个用于db单元测试。我只想在单独的阶段执行db单元测试用例,比如说“mvn集成测试”。

    junit test cases folder: bso
    db-unit test cases folder: dao
    

    但是当我运行“mvn集成测试”时,它也会自动运行junit测试用例。所以我排除了junit测试用例文件夹,它被称为“bso”。但它仍然会在bso文件夹中运行测试用例。 请看我的pom文件。如何只在“dao”文件夹中运行测试用例?

         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.0</version>
            <configuration>
                <trimStackTrace>false</trimStackTrace>
            </configuration>
            <executions>
                <execution>
                  <id>unit-tests</id>
                  <phase>test</phase>
                  <goals>
                     <goal>test</goal>
                  </goals>
                  <configuration>
                      <skip>true</skip>
                  </configuration>
               </execution>
               <execution>
                  <id>integration-tests</id>
                  <phase>integration-test</phase>
                  <goals>
                     <goal>test</goal>
                  </goals>
                  <configuration>
                     <skip>false</skip>
                     <includes>
                       <include>**/dao/**</include>
                     </includes>
                     <excludes>
                        <exclude>**/bso/**</exclude>
                     </excludes>
                  </configuration>
               </execution>
            </executions>
        </plugin>
    
    0 回复  |  直到 5 年前
        1
  •  0
  •   Anshul Singhal    5 年前

    移除 exclude 标记自 execution 具有 id 作为 集成测试 将导致在 dao 包裹。

    以下是相同的代码段:

    
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.22.0</version>
                    <configuration>
                        <trimStackTrace>false</trimStackTrace>
                    </configuration>
                    <executions>
                        <execution>
                            <id>unit-tests</id>
                            <phase>test</phase>
                            <goals>
                                <goal>test</goal>
                            </goals>
                            <configuration>
                                <skip>true</skip>
                            </configuration>
                        </execution>
                        <execution>
                            <id>integration-tests</id>
                            <phase>integration-test</phase>
                            <goals>
                                <goal>test</goal>
                            </goals>
                            <configuration>
                                <skip>false</skip>
                                <includes>
                                    <include>**/dao/**</include>
                                </includes>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
    
    
        2
  •  0
  •   Mark Bramnik    5 年前

    通常,您需要使用不同的插件执行单元和集成测试 单元测试通常由Maven Surefire插件处理,集成测试由Maven Failsafe插件处理。

    为什么? 我不知道,有两个原因:

    • 如果集成测试失败,您可能不想让构建失败(并非总是如此,但仍然如此)。
    • 测试报告不同(在不同文件夹下生成)

    Surefire默认识别为以 *Test ,故障保护插件与 *IT (集成测试) 所以把它们放在不同的文件夹里不要混在一起,这样你就可以走了。

    完成后,查看报告(在目标文件夹中 surefire-reports failsafe-reports 文件夹)并查看插件是否选择了正确的测试用例