基本配置
<plugins>
..............
..............
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
<includes>
<include>**/TestServiceTest.java</include>
</includes>
</configuration>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.1</version>
<configuration>
<includes>
<include>com/jd/feima/TestService*</include>
</includes>
<destFile>${project.build.directory}/coverage-reports/jacoco-unit.exec</destFile>
<dataFile>${project.build.directory}/coverage-reports/jacoco-unit.exec</dataFile>
</configuration>
<executions>
<execution>
<id>jacoco-initialize</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>jacoco-site</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
............
............
</plugins>
其中:
surefire指定跑 ‘**/TestServiceTest.java’
surefire插件的路徑與檔案名比對參考:
surefire插件比對模式參考
jacoco計算 相對 ‘target/classes’下面的 ‘com/jd/feima/TestService*’ 類的測試覆寫率。
而且jacoco綁定到mvn的test goal。
包含子項目的配置
最近的一個項目是一個父工程下面包含多個子工程的項目結構。
-|-com-product-project
-|- common
-|- service
-|- manager
-|- web
我們知道子工程會自動繼承父工程POM裡面的dependency與plugin設定。
該工程中作為共通插件,surefire與jacoco與compiler一樣是配置在父工程中的。
那麼子工程如何既繼承父工程的plugin又個性化路徑,測試類之類的配置?
下面是我配置的例子:
<plugins>
.........
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
<!-- 隻運作以NewTest結尾的測試 -->
<includes>
<include>**/*NewTest.java</include>
</includes>
</configuration>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.1</version>
<configuration>
<destFile>${project.build.directory}/coverage-reports/jacoco-unit.exec</destFile>
<dataFile>${project.build.directory}/coverage-reports/jacoco-unit.exec</dataFile>
</configuration>
<executions>
<execution>
<id>jacoco-initialize</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>jacoco-site</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
.......
</plugins>
surefire插件:
**/*NewTest.java : 将要執行的測試類限定為NewTest結尾的類。
jacoco
${project.build.directory} : 每個項目的target/ 目錄下放jacoco的覆寫率配置檔案以及測試報告
${project.build.directory} 是maven自帶的環境變量,我們無需配置