Мы используем dotCover 2.7 и xUnit.net 1.9.2.
На моей машине (Windows 7) и машине коллеги (Windows 8) мы можем запустить dotCover из командной строки для одной из наших сборок модульного тестирования, которая использует xUnit.net, и получить правильные отчеты о покрытии.
На нашей машине сборки (Windows Server 2008 R2 Standard), когда мы запускаем одно и то же, единственное покрытие кода, о котором сообщает dotCover, - это сама сборка модульного теста.
Мы запускаем xUnit.net с помощью задачи MSBuild. Вот соответствующие фрагменты из файла .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" анализировать /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 файл extension.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>
На данный момент мы не понимаем, почему мы получаем разные результаты на сервере сборки, чем на наших ящиках для разработчиков, поэтому мы будем благодарны за любые предложения относительно того, что еще искать.