为啥代码覆盖率在 ReSharper 中不起作用?

Posted

技术标签:

【中文标题】为啥代码覆盖率在 ReSharper 中不起作用?【英文标题】:Why is code coverage not working in ReSharper?为什么代码覆盖率在 ReSharper 中不起作用? 【发布时间】:2020-08-11 12:19:12 【问题描述】:

我已经在 Visual Studio 2019 中安装了 JetBrains 的 DotCover 和 ReSharper。

不幸的是,DotCover 代码覆盖似乎不起作用。我有这个示例类: 使用系统;

namespace ClassLibrary1

    public class Class1
    
        public int X  get; set; 
        public int Y  get; set; 
        public int Division()
        
            return X / Y;
        
    

还有这个示例单元测试:

using ClassLibrary1;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace UnitTestProject1

    [TestClass]
    public class UnitTest1
    
        [TestMethod]
        public void TestMethod1()
        
            var c = new Class1 X = 10, Y = 2;
            var d = c.Division();
            Assert.AreEqual(d, 5);
        
    

然后在 ReSharper 的“Unit Test Sessions”窗口中,我选择“Cover Unit Tests”,如下所示:

此操作运行我的测试,当我移至 ReSharper 的“单元测试覆盖率”窗口时,我看到所有覆盖率百分比为 0%,并显示一条警告消息,指出“某些测试的覆盖率信息不存在或已过时”,如下所示:

另外,在 Visual Studio 代码编辑器窗口中,我的类中的所有语句都标记为“未覆盖的语句”,如下所示:

因此,由于某种原因,dotCover 似乎无法正常工作。我尝试删除覆盖率数据并再次运行测试,但结果相同。

我错过了什么?

【问题讨论】:

在 Visual Studio(VS2019 16.5.4 和 Resharper 2020.1)中使用 dotnet core 3.1 和默认 ClassLibrary 和 MSTest 项目模板为我工作。我在“单元测试会话”窗口中收到一条警告(MSTest 适配器使用 .NETcore 1.0)。您似乎有 2 个警告,也许另一个警告正在阻止它工作。还可以尝试单击“单元测试覆盖率”窗口上的“测试”链接。 能否请您在 dotCover 错误跟踪器中打开一个新问题:youtrack.jetbrains.com/issues/DCVR?为了回答这个问题,dotCover 日志文件是必需的。使用以下命令行键启动 VS:/ReSharper.LogLevel Verbose /ReSharper.LogFile。您将在 %Temp%\JetLogs 文件夹中找到日志文件。请将日志文件附加到问题中。 @PiersMyers 你是对的,我有两个警告。我相信第一个应该和你的相似。第二个更令人担忧。它说“覆盖分析:探查器消息:API 已请求,但未调用 (C:\Users\user\.nuget\packages\microsoft.testplatform.testhost\16.6.1\build\netcoreapp2.1\x86\testhost .x86.exe [pid=11276])" @EkaterinaSolovova 我会按照你的指示去做。谢谢。 【参考方案1】:

我刚刚遇到了类似的事情。就我而言,我刚刚为我的单元测试添加了一个使用 MSTest 而不是 MSTestV2 的测试,并且代码覆盖率停止工作。我通过添加以下 nuget 包切换到 MSTestV2:

MSTest.TestAdapter (v2.1.2)

MSTest.TestFramework (v2.1.2)

并删除对 Microsoft.VisualStudio.QualityTools.UnitTestFramework 的项目引用。

希望这对某人有所帮助!

另外,我使用 Visual Studio 2017 Professional 15.9.26 和 dotCover 2020.2,如果这有影响的话。

【讨论】:

以上是关于为啥代码覆盖率在 ReSharper 中不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 setText() 在 TextView 上的以下代码中不起作用?

为啥这个简单的 SQL 代码在 Azure Databricks 中不起作用?

为啥我的媒体查询代码在 CSS 中不起作用?

为啥 pop to root 在这个示例代码 SwiftUI 中不起作用?

为啥我的 css 代码在 vuejs 中不起作用?

为啥 GlutPostRedisplay 和 sleep 功能在此代码中不起作用?