4

私はこの問題を乗り越えることができません.ABとCの3つのクラスがあります.

A は、クラス B と C を一緒にテストする統合テスト クラスです。

B と C は別のパッケージのクラスです (クラス A に関して)

統合テスト クラス A を実行すると、コード カバレッジに B と C のどの部分がカバーされているかが表示されます。必要な出力が得られません。

出力として得られるのは、クラスがインストルメント化されていないことです。

そのため、2 つのクラスのテスト カバレッジはありません。A と同じモジュールの src/main/java にサンプル コードを記述すると、クラスが認識され、インストルメント化されます。

パッケージ外のクラスに対して同じことができないのはなぜですか。

親切に助けてください。ありがとう

4

1 に答える 1

2

これは、いくつかの問題によって引き起こされる可能性があります。

1. jacoco エージェントに従ってクラスがトリガーされない

クラス B と C が jacoco エージェントによってトリガーされているかどうかを最初に確認する必要があります。これは、jacoco レポートを生成し、セッション リンク (右上隅) をクリックすることで実行できます。

クラス B または C がここにリストされていない場合は、jacoco エージェントに問題があり、クラス B / C をトリガーする正しい JVM にアタッチされていないか、クラス B/C のコードがトリガーされなかったことを意味します。 .

2. jacoco エージェントに従ってクラスがトリガーされるが、ソース/クラス ファイルが利用できない

クラス B または C がここにリストされているが、クリックできない場合は、クラス B / C がトリガーされ、jacoco エージェントによって検出されたが、リンクできなかったことを意味します。

レポートの生成中、jacoco はレポートを生成するためにクラス ファイルとソース ファイルを使用できる必要があることに注意してください。(maven を使用している場合、project.build.outputDirectory 内のクラス ファイルと project.build.sourceDirectory 内のソースが必要です。

3. jacoco エージェントに応じてクラスがトリガーされるが、利用可能なクラス ファイルが間違っている

クラス B または C がアプリサーバーにデプロイされている場合、アプリサーバーはデプロイ中にそれらのクラスのバイトコードもインストルメント化する可能性があり、ローカル プロジェクトのクラス ファイルが、 jacoco エージェント (それに関する議論については、このトピックを参照してください: https://groups.google.com/forum/?fromgroups=#!topic/jacoco/GjSlBoFTRrc )。その場合、Jacoco は、jacoco がテスト実行中に検出したクラスをダンプするフォルダーに設定できる classdumpdir パラメータを提供します。レポートの生成中にこれらのクラスを使用する必要があります。

参考文献

于 2013-01-03T09:09:39.060 に答える