4

自分のマシンで OpenCover を動作させたら、次のステップはそれをビルド サーバーで動作させることです。

OpenCover を Bamboo Build Server 上の MSBuild と統合しようとしています。ソリューションのビルド後に OpenCover を実行するように Build.proj を次のように変更しました。

<Target Name="TestAndCodeCoverage" DependsOnTargets="Build" >
    <Message Text="Executing Unit Tests and running OpenCover to check code coverage..." />
    <MakeDir Directories="Coverage" />
    <Exec Command='"C:\Program Files (x86)\OpenCover\OpenCover.Console.exe" -target:"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe" -targetargs:/testcontainer:"TestProject\bin\Release\TestProject.dll" -filter:+[*]* -output:Coverage\CodeCoverageResults.xml -register:user -mergebyhash' />
</Target>

"Coverage" ディレクトリは、ソリューション ルート ディレクトリ (ビルド中の作業ディレクトリ) に作成されます。テストが実行され、すべて合格しCommitting....ますが、ビルド ログ (コマンド ラインに表示されるもの) に表示された後、結果は生成されず、ビルドは次のタスク (ReportGenerator を使用してレポートを作成する) に進みます。これは次のように失敗します。 CodeCoverageResults.xml は作成されませんでした)。

ビルド マシンのコマンド ラインで同じコマンドを実行すると、すべてが期待どおりに機能し、ReportGenerator によってレポートを生成できます。

他の誰かが同じ問題を抱えていましたか?このPartCover の例のように、同等の dll を登録する必要がありますか?

4

1 に答える 1

5

ビルド サーバーはサービスであるため、-register スイッチのみを使用しますが、ビルド サーバーの場合は、regsvr32 を使用して 32 ビットと 64 ビットの両方のプロファイラーを一度登録してから、-register スイッチを削除する必要があると常に言います。毎回プロファイラーを登録および登録解除する必要はありません。

-register[:user] スイッチは、(私のような) 人々が制限されたアクセス許可の下で作業することを好むシナリオ用です。

于 2011-08-09T20:59:01.553 に答える