Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 直接调用maven surefire插件时是否可以运行多个测试执行?(Sonar和Jenkins未运行所有单元测试)_Unit Testing_Maven_Jenkins_Sonarqube_Maven Surefire Plugin - Fatal编程技术网

Unit testing 直接调用maven surefire插件时是否可以运行多个测试执行?(Sonar和Jenkins未运行所有单元测试)

Unit testing 直接调用maven surefire插件时是否可以运行多个测试执行?(Sonar和Jenkins未运行所有单元测试),unit-testing,maven,jenkins,sonarqube,maven-surefire-plugin,Unit Testing,Maven,Jenkins,Sonarqube,Maven Surefire Plugin,我有一个maven项目,它使用surefire插件进行单元测试。目前,测试分为两个执行:默认测试和单元测试,两者都绑定到测试目标,如下所示: <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <executions>

我有一个maven项目,它使用surefire插件进行单元测试。目前,测试分为两个执行:默认测试和单元测试,两者都绑定到测试目标,如下所示:

<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <executions>
      <!-- Test one set of files -->
      <execution>
        <id>default-test</id>
        <goals>
          <goal>test</goal>
        </goals>
        <configuration>
          <includes> ... </includes>
        </configuration>
      </execution>
      <!-- Test a different set of files -->
      <execution>
        <id>unitTests</id>
        <goals>
          <goal>test</goal>
        </goals>
        <configuration>
          <includes> ... </includes>
        </configuration>
      <execution>
    </executions>
  </plugin>
</plugins>
我正在Jenkins上使用Sonar插件生成代码度量,Jenkins的设置如下:

<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <executions>
      <!-- Test one set of files -->
      <execution>
        <id>default-test</id>
        <goals>
          <goal>test</goal>
        </goals>
        <configuration>
          <includes> ... </includes>
        </configuration>
      </execution>
      <!-- Test a different set of files -->
      <execution>
        <id>unitTests</id>
        <goals>
          <goal>test</goal>
        </goals>
        <configuration>
          <includes> ... </includes>
        </configuration>
      <execution>
    </executions>
  </plugin>
</plugins>
  • 运行构建操作
    mvn clean安装-DskipTests
  • 将Sonar插件作为构建后操作运行
这意味着Sonar插件运行单元测试,单元测试只运行一次。当Sonar插件运行时,我看到以下输出:

[INFO] maven-surefire-plugin:213:test (default-cli) 
请注意,只调用默认的cli执行,而不是默认的test+unitTests,因为(我假设)surefire插件是通过
mvn surefire:test
直接调用的,而不是通过
mvn test
生命周期调用的

我可以将默认cli执行添加到POM文件中,并从默认测试执行中复制配置,但这将只运行一组单元测试。在
unitTests
执行中配置的单元测试根本不会运行,即使该执行绑定到相同的目标

当Sonar插件调用mvn surefire:test时,如何确保调用默认cli和unitTests执行

我想也许我的Jenkins设置应该改变,这样单元测试就可以在正常的构建操作中运行,生成代码覆盖率报告,然后Sonar插件作为构建后操作运行,并加载这些报告以执行分析。不确定这是否可行,或者需要对我的POM文件进行哪些更改来支持这一点(希望对POM文件进行最小更改是另一个目标)

我想也许我的詹金斯设置应该改变,这样 单元测试在生成代码的正常构建操作中运行 覆盖率报告,然后Sonar插件作为后期构建运行 操作并加载这些报告以执行分析


这似乎是个好主意。你可以这样做。您可以在不同的配置文件中配置surefire插件,并使您希望工具使用的插件在默认情况下处于活动状态。

我最近遇到了类似的问题,这是pom now: