9

クラスをカバレッジから除外する jacoco/junit ant ターゲットを取得するのに問題があります。次のようなもので、パッケージを除外することができます:

<jacoco:coverage destfile="${coverage.reports.dir.xml}/output.jacoco" excludes="foo.*:bar.fiz.*:my.long.package.name.*">

テストクラスはテストするクラスと同じパッケージにあるため、これは私のテストクラスを除外しません。正規表現でテストクラスを除外するのにうんざりしましたが、うまくいきません。

<jacoco:coverage destfile="${coverage.reports.dir.xml}/output.jacoco" excludes="foo.*:bar.fiz.*:**/Test.*:**/Tests.*">

また、必要なクラスをレポート タスクに含めようとしましたが、テスト クラスが同じパッケージに含まれているため、機能しません。ビルドでは、すべてのクラスが同じディレクトリ (buildRoot/classes/ProjectName など) に配置されます。したがって、buildRoot/classes/ProjectName/foo には、テストおよび非テスト クラス用にコンパイルされたクラスが含まれます。

このセットアップですべてのテストを除外するように jacoco を取得する方法について何か提案はありますか?

ありがとう。

4

1 に答える 1

23

クラスを で指定するとjacoco:coverageカバレッジから除外されるため、レポートでは 0% のカバレッジとして表示されます。

これらのクラスを JaCoCo レポートからも除外するには、classfiles ファイルセット タスクを使用し、jacoco:reportant タスクでそれらを除外する必要があります。

<jacoco:report>
  <executiondata>
    <file file="${coverage.reports.dir.xml}/merged-jacoco.exec"/>
  </executiondata>
  <structure name="Unit Tests ${unit.test.run.ts}">
    <classfiles>
      <fileset dir="${build.root}/classes/ProjectName/" >
        <exclude name="**/*Test*.class" />
      </fileset>
    </classfiles>
    <sourcefiles encoding="UTF-8">
      <fileset dir="${src.root}/ProjectName/src/main"/>
    </sourcefiles>
  </structure>

  <html destdir="${coverage.reports.dir.html}"/>
</jacoco:report>
于 2013-01-19T21:13:57.710 に答える