問題タブ [jacoco]
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.
maven - Selenium テスト Jacoco プロジェクト カバレッジ
メイン プロジェクトの一部ではないセレン プロジェクト モジュールを実行しています。Jacoco maven プラグインと Surefire プラグインを使用してセレン テストを実行しています。プロジェクト全体...外部/プロジェクト全体のカバレッジを取得するには、Jacoco と Surefire をどのように構成する必要がありますか??
sonarqube - Sonar Jacoco Excludes sonar.jacoco.excludes は、無視される代わりに 0% のカバレッジを引き起こします。
私が書くとき
パッケージはインストルメンテーション/レポートから除外されず、カバレッジは 0% と表示されます
どうしてこれなの ?
ソナー バージョン 3.6
android - 間違った呼び出しオペコードを使用した Dalvik 変換
dalvik dex コンバーターとメソッドの呼び出しに使用しているオペコードに問題があります。基本的にprivate final
、クラスで定義されたメソッドがあり、それを呼び出すと、invoke-direct
オペコードを生成する代わりに、dx が生成されinvoke-super
ます。プライベート メソッドであるため、スーパー クラスにはメソッドが存在しないため、デバイスで VFY 違反が発生します。これをトリガーする正確なシナリオを突き止めることができました。次の場合に発生するようです。
- JaCoCo を使用してクラスをインストルメント化し、
- でコンパイルされたクラス
--target 1.6
これら 2 つの条件が満たされている場合、結果の dex クラスにはinvoke-super
代わりにinvoke-direct
. JaCoCo を無効にすると、または でコンパイルすると--target 1.5
、正しいinvoke-direct
オペコードが使用されます。
javap
逆アセンブルされたクラス コードを見るdx
と、直接ではなくスーパーを想定する原因がわかります。
インストルメント化されていない、1.6 用にコンパイルされたもの:
インストルメント化、1.5 用にコンパイル ( --target 1.5
):
インストルメント化、1.6 用にコンパイル:
したがって、違いは、コンパイルされた .class ファイルが、クラスの完全修飾クラス名を参照する Java バイトコードをコンパイルしたことです (" " と " "this
に注意してください)。メソッド名が完全修飾されている場合は を使用する必要があると自動的に想定しているように見えますが、修飾されていない場合は を使用します。//Method waitForConnectivity:()V
//Method com/example/ClassName.waitForConnectivity:()V
dx
invoke-super
invoke-direct
私の質問は次のとおりです。
- これは Android の
dx
バグですか、それとも JaCoCo のバグですか? - 自動化されたテスト ビルドで JaCoCo がインストルメント化されたクラスを適切に動作させるには、どうすればこれを回避できますか?
私の現在の回避策は、Maven の「jacoco」プロファイルを使用することです。そこで${java.version}
プロパティをオーバーライドして、デフォルトの「1.6」から「1.5」に変更します。より良い解決策はありますか?
java - Jacoco、Maven & TestNG (0 テストカバレッジ)
現在、Maven と TestNG を使用して Jacoco を実行しようとしています。
何もダウンロード/インストールしていません。
親POMに以下を追加しようとしました(テストパッケージPOMにも追加しようとしましたが、まだ結果はありません)
「mvn clean install」または mvn package を実行すると、出力がルート フォルダーに「test-output」として表示されます。Maven で「outputDirectory」を設定しようとしましたが、何もしません。
私が抱えているもう 1 つの大きな問題は、testNG テストを取得していないことです。コードカバレッジは 0 です。
誰か助けてくれませんか?
java - arquillian jboss as7 マネージドおよび jacoco - jacoco.exec ファイルは空です
jboss 7.1.3 にデプロイし、テストに arquillian を使用するプロジェクトがあり、それにコード カバレッジ メトリックを追加しようとしています。
管理されたコンテナオプション(jboss-as-arquillian-container-managed)を使用していますが、今のところ、arquillianがjbossを開始するために使用するjvm引数に-javaagentパラメータを追加しようとしたので、arquillian.xmlは次のようになります:
jacoco.exec ファイルと classdumpdir の両方が作成されているため、この引数が取得されていることは 100% 確実です。
問題は、jacoco.exec ファイルが空であることです。jboss が開始され、テストが実行されて正常に完了し、jboss がシャットダウンされ、classdumpdir が作成されます (したがって、jacoco の仕様によれば、これはクラスが適切に検出されることを意味します) が、jacoco.exec は完全に空のままです。
javaagent
手動で開始したのとまったく同じ jboss に正確な保存引数を指定すると、すべて正常に動作します。
私は何を間違っていますか?
testing - jacoco.exec レポートの使用方法
jacoco.exec であるjacocoからコード カバレッジ レポートを生成しました。でも使い方がわからない…
私がそれを生成した方法は、コマンドラインを使用することです:
次に、jacoco.exec レポートを取得しました。必要なのはパーセンテージの数だけで、コマンドラインのみを使用しています。このレポートを読み取り可能な txt ファイルに変換する方法はありますか?
皆さんありがとう
java - JaCoCoとAspectj
Maven マルチモジュール プロジェクトで JaCoCo を使用しており、AspectJ マジックを追加したいのですが、テストの実行中に次のエラーが発生します。
java.lang.instrument.IllegalClassFormatException を開始します。
このメッセージの下に、スタック トレースがもう一度表示されます。
jacocoをaspectjで使用するにはどうすればよいですか?
unit-testing - Gradle jacoco コード カバレッジ - その後、Jenkins で公開/表示
Java アプリケーション プロジェクトのコード カバレッジをセットアップしようとしています。
プロジェクト名:NewApp
プロジェクトの構造:
- src/java/** (ソースコード)
- src/java-test (単体テスト - Jnuit)
- test/it-test (統合テスト)
- test/at-tests (受け入れテスト)
- tomcat/* (Tomcat の開始/停止スクリプトを含む)
- xx/.. etc 通常のアプリケーションに必要なフォルダー。
グラドルのバージョン: 1.6
環境:Linux
ビルド アーティファクト リポジトリ (ex の artifactory/maven) からアプリケーション (NewApp) の依存関係 (つまり、アプリがビルド プロセスに使用するサービス jar) をフェッチし、アプリをビルドする gradle ビルド スクリプトを実行しています。
この時点で、NewApp アプリケーション プロジェクトの JaCoCo プラグインを使用してコード カバレッジを取得したいと考えました。
Gradle/Jacoco ごとのドキュメントに従いましたが、Jacoco カバレッジ レポートが何をしたかを確認できる jacoco などのレポート/... フォルダーが作成されないようです。
私の質問: 1. ユニット テスト (Junit) を使用してコード カバレッジを取得するには、次のことだけを行う必要があり、ユニット テスト (テスト タスク、つまり「gradle テスト」) を実行する前に tomcat を開始/停止する必要はありません。 ) 単体テストを使用して / のコード カバレッジを取得します。アドバイス/修正してください。コード(Gradle jacoco単体テスト部分のみ)-私が使用しているのは次のとおりです。
および統合テストの場合:
jacocoTestReport はテスト タスクに依存するため、それらが最初に呼び出され、最後に jacocoTestReport がコード カバレッジで見つかったものをレポートします。
- 統合テストのコード カバレッジを取得するには、最初に tomcat を起動し (つまり、統合テストのテスト ターゲットを実行/呼び出す前に)、「gradle integrationTest」または「gradle test」タスクを呼び出してから tomcat を停止し、コードを取得する必要があると想定しています。取材レポート。他のブログ投稿から、Tomcat が起動する前に jacoco エージェントを割り当てるには JAVA_OPTS 変数をセットアップする必要があることもわかりました。
例: JAVA_OPTS 変数を次のように設定します。
Gradle/groovy を初めて使用する場合 - Tomcat の開始/停止を伴う場合、上記の統合/単体テストを機能させるために、build.gradle (ビルド スクリプト) 内にどのコードを記述すればよいかわかりません。誰かがそれを行うためのサンプル スクリプトを提供できる場合は、試してみます。
Jenkins で Jacoco コード カバレッジを公開すると (Jacoco レポートを公開するために Jenkins ポスト ビルド アクションを使用して)、現在コード カバレッジが得られません。Jenkins ビルド ダッシュボードでは、コード カバレッジが 0% と表示されます (つまり、バーはすべて赤色で表示され、実際のコード カバレッジは緑色ではありません)。
これについていくつかの牽引力を得るためにあなたのアドバイスが必要です.