ビルドチェーンを使用して TeamCity ビルドをセットアップし、コミットによってトリガーされたときに単体テストと統合テストを並行して実行できるようにします。
- ビルド チェーン - 以下に依存:
- 単体テスト
- 統合テスト
ビルドチェーンの単体テストと統合テストによって生成されたカバレッジデータを結合/マージできる方法を探しています.
計画は、コミットされたコードのカバレッジの変化を監視できるようにすることであり、パーセンテージが低下した場合はビルドに失敗する可能性があります!
ビルドチェーンを使用して TeamCity ビルドをセットアップし、コミットによってトリガーされたときに単体テストと統合テストを並行して実行できるようにします。
ビルドチェーンの単体テストと統合テストによって生成されたカバレッジデータを結合/マージできる方法を探しています.
計画は、コミットされたコードのカバレッジの変化を監視できるようにすることであり、パーセンテージが低下した場合はビルドに失敗する可能性があります!
ユニットおよび統合ターゲットからのカバレッジ ファイル (*.em、*.ec) を使用できるように、「ビルド チェーン」ターゲットをセットアップしました。
ビルド チェーン ターゲット専用の ant ビルド ファイルを作成しました (emma doco の助けを借りて!):
<project name="coverage-merge" basedir="." default="all">
<!-- directory that contains emma.jar and emma_ant.jar: -->
<property name="emma.dir" value="${basedir}/lib"/>
<property name="coverage.dir" location="${basedir}/coverage"/>
<path id="emma.lib">
<pathelement location="${emma.dir}/emma-teamcity-3.1.1.jar"/>
<pathelement location="${emma.dir}/emma_ant-2.0.5312.jar"/>
</path>
<taskdef resource="emma_ant.properties" classpathref="emma.lib"/>
<target name="all" depends="-report"/>
<target name="-report">
<emma>
<report sourcepath="${src.dir}" sort="+block,+name,+method,+class"
metrics="method:70,block:80,line:80,class:100">
<infileset dir="${coverage.dir}" includes="**/*.em, **/*.ec"/>
<!-- for every type of report desired, configure a nested
element; various report parameters
can be inherited from the parent <report>
and individually overridden for each report type:
-->
<txt outfile="${coverage.dir}/coverage.txt" depth="package"
columns="class,method,block,line,name"/>
<xml outfile="${coverage.dir}/coverage.xml" depth="package"/>
<html outfile="${coverage.dir}/coverage.html" depth="method"
columns="name,class,method,block,line"/>
</report>
</emma>
</target>
</project>
...これにより、すべてのカバレッジ ファイルが 1 つのレポートにマージされます。
のmetrics
パラメーターはreport
、html レポートの強調表示のしきい値を設定します。これにより、しきい値よりも低いパッケージとファイルに対するパーセンテージが赤で強調表示されます。
xml 出力を変更すると、 andarielのようなものを使用して結果に対して xpath を実行し、しきい値が満たされない場合にビルドを強制的に失敗させることができます!
私が遭遇したほとんどのコード カバレッジ ツールには、異なるサブシステムまたは重複するサブシステムからのテスト結果を組み合わせる方法がないようです。ご指摘のとおり、これは非常に便利な能力です。
当社のSD テスト カバレッジ ツール にはこの機能があり、Java、C、C++、C#、PHP、および COBOL で使用できます。実際、SD テスト カバレッジ ツールは、複数言語のテスト カバレッジ データを 1 つのモノリシックな結果に結合できるため、多言語アプリケーションのテスト カバレッジの概要を把握できます。関連するすべてのソース言語のカバレッジを表示したり、要約レポートを提供したりできます。