18

私は EclEmma を使用して、プロジェクトのシナリオ テストとユース ケース テストのカバレッジをテストしています。最も一般的なクラスとユース ケース テストを含む Base パッケージがあります。カバレッジは次のようになります。

プロジェクトのコードカバレッジ

私が望むのは、カバレッジの計算からユース ケース テスト (BugReportTest など) を除外することです。しかし、私はその中のテストを考慮したいと思っています。クラス全体をカバレッジから除外する方法は知っていますが、そうすると、コードのどの行がテストされているかを確認する実際のテストが忘れられるため、カバレッジが低下します。これらのユース ケース テストは、プライバシー上の理由から基本パッケージにとどまる必要があります。

4

1 に答える 1

17

技術的な理由から、特定のクラスをコード カバレッジ分析から除外する必要がある場合があります。次のオプションは、特定のクラスを分析から除外するようにカバレッジ エージェントを構成します。パフォーマンスの最適化または技術的なコーナー ケースを除いて、これらのオプションは通常必要ありません。

  1. 除外:実行分析から除外する必要があるクラス名のリスト。リストのエントリは a で区切られ、次colon (:) を使用できます。wildcard characters (* and ?). (Default: empty)

  2. Exclude classloaders:実行分析から除外する必要があるクラスローダー名のリスト。リスト エントリは で区切られ、colon (:)を使用する場合がありますwildcard characters (* and ?)。このオプションは、JaCoCo コード インスツルメンテーションと競合する特別なフレームワーク、特に Java ランタイム クラスにアクセスできないクラス ローダーの場合に必要になることがあります。(Default: sun.reflect.DelegatingClassLoader)

警告: これらのオプションは慎重に使用してください! 無効なエントリは、コード カバレッジ ランチャーを壊す可能性があります。また、分析の範囲を定義するためにこれらのオプションを使用しないでください。除外されたクラスは、対象外として表示されます。

リソース リンク:

  1. EclEmma コード カバレッジ設定

次の例はすべて、同じ包含/除外パターンのセットを指定しています。

  1. <filter includes="com.foo.*" excludes="com.foo.test.*, com.foo.*Test*" />
  2. <filter includes="com.foo.*" /> <filter excludes="com.foo.test.*, com.foo.*Test*" />
  3. <filter value="+com.foo.*, -com.foo.test.*, -com.foo.*Test*" />
    <filter excludes="com.foo.*Test*" file="myfilters.txt" />
    myfilters.txt ファイルには次の行が含まれています。

    -com.foo.test.* +com.foo.*

リソース リンク:

  1. カバレッジ フィルター
  2. すべてのクラスが -g(debug='true') でビルドされていることは確かですが、それでも EMMA はデバッグ情報の欠落について不平を言っています!

EclEmma の単体テストのコード カバレッジを無視する

Preferences->Java->Code Coverage"Only path entries matching"オプションを-に設定するとsrc/main/javaうまくいくようです

于 2016-05-07T16:33:49.847 に答える