我正在使用Visual Studio Enterprise 2017来开发我的.net核心项目。
我的解决方案还有一些单元测试项目,我想查看我当前的代码覆盖率。
当我点击Test - >分析代码覆盖率 - >所有测试。我的所有单元测试都在运行,但在代码覆盖率结果中,它只报告了我的单元测试项目的代码覆盖率,这对我没有任何意义。
问题1 :你们和我有同样的问题吗?对此有何解决方案?我还需要在VSTS中设置构建定义来报告代码覆盖率。
问题2 :当我右键单击调试我的单元测试时。它执行我的所有单元测试。这是VS2017中的错误吗?
Update1:我找到了这个主题:https://github.com/Microsoft/vstest/issues/597
答案 0 :(得分:37)
即使使用“修复”版本,我也遇到了问题(只能查看测试项目的代码覆盖率,而不是我正在测试的实际项目)。为了解决这个问题,我从测试项目中删除了<DebugType>Full</DebugType>
。
所以,作为摘要:
将Microsoft.CodeCoverage(1.0.3)包添加到您的测试项目中。
在.csproj文件上添加<DebugType>Full</DebugType>
标记
我们希望查看代码覆盖率值的项目(在vstest github link内解释<PropertyGroup>
内部。)
我的设置(最小设置?)
答案 1 :(得分:8)
你可以试试Jetbrains的dotCover。 https://www.jetbrains.com/dotcover/features/
dotCover是一个.NET单元测试和代码覆盖工具,可以在Visual Studio中正常工作,帮助您了解单元测试覆盖代码的程度,提供可视化代码覆盖率的绝佳方法,并且可以持续集成。 dotCover计算并报告面向.NET Framework,Silverlight和.NET Core的应用程序中的语句级代码覆盖率。
它适用于.NET Core&amp;可以显示代码覆盖率。
支持多个单元测试框架,即MSTest,NUnit,xUnit(开箱即用)和MSpec(通过插件)。
答案 2 :(得分:3)
基于这篇文章(Code Coverage does not work in the IDE with netcoreapp1.x projects (VS 2017 RTM):
目前尚未针对netcore项目实施代码覆盖率。该 关于这个问题的工作正在进行中,它将作为RTW后的一部分 版本。
答案 3 :(得分:1)
看起来他们在发布之前仍然在研究基础设施(数据收集器)位。据说它们很接近。
答案 4 :(得分:1)
答案 5 :(得分:0)
<?xml version="1.0" encoding="utf-8"?>
<!-- File name extension must be .runsettings -->
<RunSettings>
<DataCollectionRunSettings>
<DataCollectors>
<DataCollector friendlyName="Code Coverage" uri="datacollector://Microsoft/CodeCoverage/2.0" assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<Configuration>
<CodeCoverage>
<ModulePaths>
<Exclude>
<ModulePath>.*\.Tests.dll$</ModulePath>
<!-- Add more ModulePath nodes here. -->
</Exclude>
</ModulePaths>
</CodeCoverage>
</Configuration>
</DataCollector>
</DataCollectors>
</DataCollectionRunSettings>
</RunSettings>
这里的重要部分是在ModulePaths部分中排除测试项目。