天天看點

jacoco代碼覆寫率配置的maven配置

基本配置

<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自帶的環境變量,我們無需配置