2

Maven プロジェクトで次の構造を使用する場合:

<plugins>
        <plugin>
            <groupId>org.scala-tools</groupId>
            <artifactId>maven-scala-plugin</artifactId>
            <version>2.15.2</version>
            <executions>
                <execution>
                    <goals>
                        <goal>compile</goal>
                        <goal>testCompile</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <args>
                    <arg>-g:line</arg>
                </args>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.5.8.201207111220</version>
            <executions>
                <execution>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                </execution>
                <execution>
                    <id>report</id>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>report</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>

テストは実行されますが、jacoco.exec ファイルは作成されません。このタグ destFile を prepare-agent ゴールに追加しようとしましたが、成功しませんでした (カバレッジ情報を含むファイルが作成されません)。

Maven と Jacoco を使用して Scala の単体テストのコード カバレッジを計算するフォームはありますか?

4

1 に答える 1

1

Jacoco maven プラグインの動作は、JDK、Scala、およびプラグイン自体のバージョンに依存します。

同じ構成を追加しただけで、適切に動作します: レポートを含む jacoco.exec と site/jacoco の両方がターゲットディレクトリにあります: https://github.com/plokhotnyuk/calculator/commit/e3a84db02dd942b0df71d4fa337df29512e213f6

その後、Jacoco maven プラグインの最新 (0.6.2.201302030002) バージョンを使用すると、エージェント エラーが発生しました。

Caused by: java.lang.RuntimeException: Class java/util/UUID could not be instrumented.
    at org.jacoco.agent.rt.internal_5d10cad.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:138)
    at org.jacoco.agent.rt.internal_5d10cad.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:99)
    at org.jacoco.agent.rt.internal_5d10cad.PreMain.createRuntime(PreMain.java:51)
    at org.jacoco.agent.rt.internal_5d10cad.PreMain.premain(PreMain.java:43)
    ... 6 more
Caused by: java.lang.NoSuchFieldException: $jacocoAccess
    at java.lang.Class.getField(Class.java:1542)
    at org.jacoco.agent.rt.internal_5d10cad.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:136)
    ... 9 more
FATAL ERROR in native method: processing of -javaagent failed
Exception in thread "main" 

そして、JDK8からJDK7に切り替えることで障害が解決しました。カバレッジ レポートの数字は変更されていません。

また、Scala 2.10 に切り替えた後、ソース行の強調表示が異なって見えます:

スカラ 2.9 ここに画像の説明を入力

スカラ 2.10 ここに画像の説明を入力

于 2013-03-27T12:15:15.477 に答える