使用不同的参数执行两次Maven-surefire-plugin

时间:2017-01-20 11:31:57

标签: maven unit-testing surefire

我试图通过带有两个不同参数的sure-fire插件来运行我的单元测试。 一个使用jacoco将测试结果输入SonarQube,另一个使用dynatrace运行。 我尝试将它放在两个不同的执行标签中,但似乎没有正常工作。 请帮助我,我做错了什么? 以下是我的pom.xml中的代码段:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>2.12</version>
  <configuration>
     <argLine>${jacoco.ut.arg}</argLine>
     <argLine>-agentpath:"C:\Program Files\dynaTrace\Dynatrace 6.3\agent\lib64\dtagent.dll"=name=JavaAgent,server=localhost:9998,optionTestRunIdJava=${dtTestrunID}</argLine>
     <excludes>
       <exclude>**/at/**</exclude>
       <exclude>**/it/**</exclude>
     </excludes>
   </configuration>
</plugin>

1 个答案:

答案 0 :(得分:4)

您需要使用<executions/>。请考虑以下示例:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.12</version>

    <!-- You could also have the configuration tag inside the execution -->
    <configuration>
        <argLine>${jacoco.ut.arg}</argLine>
        <argLine>-agentpath:"C:\Program Files\dynaTrace\Dynatrace 6.3\agent\lib64\dtagent.dll"=name=JavaAgent,server=localhost:9998,optionTestRunIdJava=${dtTestrunID}</argLine>
        <excludes>
            <exclude>**/at/**</exclude>
            <exclude>**/it/**</exclude>
        </excludes>
    </configuration>

    <executions>
         <execution>
             <id>run-tests</id>
             <phase>test</phase>   <!-- or whatever phase you like -->
             ...
         </execution>
         <execution>
             <id>run-jacoco</id>
             <phase>test</phase>   <!-- or whatever phase you like -->
             <goals>...</goals>
             ...
         </execution>
    </executions>
</plugin>

查看Maven POM Reference

  

执行:请务必注意插件可能具有的功能   多个目标。每个目标可能都有一个单独的配置   甚至将插件的目标完全绑定到不同的阶段。   执行配置执行插件的目标。