問題タブ [scoverage]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
40 参照

gradle - マルチプロジェクト ビルドで複数の Gradle プロジェクトにスカバレッジ コード カバレッジを提供する

マルチプロジェクトGradleビルドでgradle-scoverageを使用しています。:projectB のテストが :projectA のコードを実行するという事実を利用したいと考えています。しかし、gradle-scoverage 7.0.0 では、:projectB のカバレッジ レポートに :projectA の関連する行のコード カバレッジが表示されず、:projectA のカバレッジ レポートはそのプロジェクトのみです。

GitHub イシュー トラッカーで提案された解決策を見つけました。

しかし、うまくいきませんでした。最初の問題は、gradle-scoverage プラグインが各 Gradle プロジェクトの build.gradle ファイルに個別に適用されるため、最上位プロジェクトの build.gradle ファイルの実行時にタスクが作成されていないことでした。

そこで、その行を projectB の build.gradle ファイルに移動して、次のように変更してみました。

しかし、依存関係は機能しませんでした。reportScoverageタスクが目的の順序で実行された一方で、タスクreportTestScoverageが逆の順序で実行されたためです。だから私はそれを次のように変更しました:

reportTestScoverageしかしその後、Gradle は再び、タスクが見つからないと不平を言いました。

したがって、こちらのアドバイスに従って、次のように再構築しました。

project(':projectA').tasks.reportTestScoverage.dependsOn(':projectB:reportTestScoverage')

しかし、今では projectB のreportTestScoverageタスクが最初に実行されますが、projectA の関連する行のコード カバレッジは表示されません。IntelliJ デバッガーで projectB の関連するテストを実行して、この行がヒットすることを確認しました。

次に、追加するのを忘れていたことに気付きました。

GitHub の問題のコメントに記載されているように、projectB の依存関係に。しかし、これを追加しても違いはありませんでした。

gradlew clean build私は各試みの後に走りました。

IntelliJ を使用して scoverage のバイトコード拡張をデバッグすることはできませんでしたが、jdb を使用すると、projectB のテストを実行すると、関連する行がカバレッジを示さないクラスが scoverage によって計測されていないことがわかります。