dotCover 2.7 と xUnit.net 1.9.2 を使用しています。
私のマシン (Windows 7) と同僚のマシン (Windows 8) では、xUnit.net を使用するユニット テスト アセンブリの 1 つに対してコマンド ラインから dotCover を実行し、正しいカバレッジ レポートを取得できます。
私たちのビルド マシン (Windows Server 2008 R2 Standard) で同じことを実行すると、dotCover が報告する唯一のコード カバレッジは単体テスト アセンブリ自体です。
MSBuild タスクを使用して xUnit.net を実行しています。.msbuild ファイルの関連部分を次に示します。
<UsingTask TaskName="Xunit.Runner.MSBuild.xunit" AssemblyFile="$(PackagesDir)xunit.$(XunitVersion)\lib\net20\xunit.runner.msbuild.dll" />
<Target Name="XunitTests">
<xunit Assembly="$(TrunkDir)src.UnitTests\Ipseity.Server.Events.UnitTests\bin\Debug\Ipseity.Server.Events.UnitTests.dll" />
</Target>
次のコマンド (各環境で同じコマンド) を使用して、コマンド ラインから dotCover を実行しています。
"c:\Program Files (x86)\JetBrains\dotCover\v2.7\Bin\dotCover.exe" analyze /TargetExecutable="c:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe" /TargetArguments ="/t:XunitTests ipseity.msbuild" /TargetWorkingDir=c:\tfs\SI\ipseity\trunk\build /Output=c:\temp\coverage.xml
Windows 7 および Windows 8 マシンでは、coverage.xml ファイルに次のものが含まれています。
<Root CoveredStatements="1977" TotalStatements="7867" CoveragePercent="25" ReportType="Xml" DotCoverVersion="2.7.2.176">
<Assembly Name="Ipseity.Server.Common" CoveredStatements="4" TotalStatements="339" CoveragePercent="1">
...
</Assembly>
<Assembly Name="Ipseity.Server.Events" CoveredStatements="691" TotalStatements="798" CoveragePercent="87">
...
</Assembly>
<Assembly Name="Ipseity.Server.Events.UnitTests" CoveredStatements="1240" TotalStatements="1251" CoveragePercent="99">
...
</Assembly>
<Assembly Name="ipseity.Server.MessageProcessing" CoveredStatements="42" TotalStatements="5479" CoveragePercent="1">
...
</Assembly>
</Root>
ただし、ビルド サーバー (Windows Server 2008 R2 Standard) では、単体テスト アセンブリのみがカバレッジ レポートに表示されます。
<Root CoveredStatements="1033" TotalStatements="1039" CoveragePercent="99" ReportType="Xml" DotCoverVersion="2.7.2.176">
<Assembly Name="Ipseity.Server.Events.UnitTests" CoveredStatements="1033" TotalStatements="1039" CoveragePercent="99">
...
</Assembly>
</Root>
この時点で、開発ボックスとビルド サーバーで異なる結果が得られる理由について困惑しているため、他に何を探すべきかについての提案をいただければ幸いです。