.net核心项目上的dotCover和xUnit

时间:2017-10-27 13:37:29

标签: .net-core xunit dotcover dotnet-cli

我正在尝试使用dotCover生成代码覆盖率报告文件,而我的测试是使用xUnit完成的。​​

我运行的命令是dotCover analyse coverage.xml

我的coverage.xml文件看起来像这样:

<AnalyzeParams>
  <TargetExecutable>C:\Users\my.name\.nuget\packages\dotnet-xunit\2.3.0\tools\net452\xunit.console.exe</TargetExecutable>
  <TargetArguments>Factures.Services.dll</TargetArguments>
  <TargetWorkingDir>Services\Factures.Services.Tests\bin\Debug\netcoreapp2.0</TargetWorkingDir>
  <Output>dotCover.html</Output>
  <ReportType>html</ReportType>
</AnalyzeParams>

但是我收到以下错误消息:

could not find xunit.dll (v1) or xunit.execution.*.dll (v2) in C:\...\Services\Factures.Services.Tests\bin\Debug\netcoreapp2.0

2 个答案:

答案 0 :(得分:3)

请尝试以下coverage.xml

<AnalyzeParams>
  <TargetExecutable>C:\Program Files\dotnet\dotnet.exe</TargetExecutable>
  <TargetArguments>test Factures.Services.csproj</TargetArguments>
  <TargetWorkingDir>Services\Factures.Services.Tests\</TargetWorkingDir>
  <Output>dotCover.html</Output>
  <ReportType>html</ReportType> 
</AnalyzeParams>

执行保持dotCover analyse coverage.xml

答案 1 :(得分:2)

感谢@fabian-s寻求解决方案的帮助。

如果您的测试项目csproj文件中有以下行(根据xUnit doc):

<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" />

然后对于每个测试项目使用以下内容然后合并您的报告(请参阅dotCover doc):

<AnalyzeParams>
  <TargetExecutable>C:\Program Files\dotnet\dotnet.exe</TargetExecutable>
  <TargetArguments>xunit</TargetArguments>
  <TargetWorkingDir>Services\Factures.services.test</TargetWorkingDir>
  <Output>dotCover.html</Output>
  <ReportType>html</ReportType> 
</AnalyzeParams>

但是,如果您在每个测试项目csproj文件中都有以下行(根据Ms doc):

<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />

然后使用以下内容获得整个解决方案:

<AnalyzeParams>
  <TargetExecutable>C:\Program Files\dotnet\dotnet.exe</TargetExecutable>
  <TargetArguments>test</TargetArguments>
  <TargetWorkingDir>.</TargetWorkingDir>
  <Output>dotCover.html</Output>
  <ReportType>html</ReportType> 
</AnalyzeParams>