0

VS 2008 プロジェクト (asp.net) があります。TFS の下にあります。モック フレームワーク (nunit?) を使用して単体テストを作成しました。開発者は自分のマシンでテストを実行し、コード カバレッジを表示できます。

これで、ソリューションを VS 2012 プロフェッショナルにアップグレードしました。プロフェッショナル版であるため、コード カバレッジの実行をサポートしていないため、あえて OpenCover を試してみました。

問題は、TFS 経由のビルドでは、コード解析ではコード カバレッジが 24% と表示されますが、OpenCover を開発者のマシンでローカルに実行すると、まったく異なる数値が表示されることです。TFS が報告する内容は、自動化された ALM コンプライアンス エンジンまたは組織によって監視されているため、目標とする必要があり、開発者は、TFS コード カバレッジ % が X を下回らないことに注意する必要があります。

私のOpenCover synatxは次のとおりです。

OpenCover.Console.exe -register:user -target:"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\MSTest.exe" -targetargs:"/noisolation /testcontainer:"C:\code\APRRel\UnitTest\bin\Debug\unittest.dll" /resultsfile:C:\Reports\MSTest\APRRel.trx" -filter:"+[*]*" -mergebyhash -output:C:\Reports\MSTest\projectCoverageReport.xml

TFS と OpenCover からの私の出力は次のとおりです。

TFS 結果

OpenCoverの結果

TFS と同様の統計情報を opencover レポートに作成するにはどうすればよいですか?

4

1 に答える 1

0

彼らが言うように、あなたはリンゴとナシを比較しようとしています。2 つのツールは異なり、コードを計測する方法も異なります。また、ReportGenerator に表示される数は、対象となる行の数に基づいています。OpenCover は、シーケンス ポイントの数に基づいて異なる数を持ちます (これは、複数の行との 1:1 の関係ではありません)。

実際の opencover 出力を開くと、このような要約行が上部近くに表示されます

<Summary numSequencePoints="895" visitedSequencePoints="895" numBranchPoints="537" visitedBranchPoints="455" sequenceCoverage="100" branchCoverage="84.73" maxCyclomaticComplexity="8" minCyclomaticComplexity="0" />

シーケンス カバレッジは、おそらく VS カバレッジがブロックベースと呼んでいるものであるため、確認したいものですが、インストルメンテーション プラクティス (リンゴとナシ) が異なるため、両方のツールが異なる可能性があります。

次に、フィルターを検討する必要があり+[*]*ます。これには、PDB ファイルを持つすべてのアセンブリが含まれます。次のフィルターを使用してテスト アセンブリを除外してみてください。+[*]* -[*.Tests]*テスト アセンブリが.Tests.

ただし、IMO、開発者にビルドシステムのカバレッジがデスクトップと同じであることを知ってもらいたい場合は、実際には両方の場所と同じ構成で同じツールを実行する必要があります。デバッグリリースのカバレッジは、コンパイラが異なる IL を作成するために異なる場合があり、これはインストルメンテーションに影響を与えるため、数値に影響しますが、通常はコードベースに応じて 0 ~ 2% の範囲内です。

于 2013-09-08T23:02:00.823 に答える