c# - 为什么代码覆盖率在 ReSharper 中不起作用?

标签 c# visual-studio unit-testing resharper dotcover

我已经在 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”,如下所示:

enter image description here

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

enter image description here

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

enter image description here

因此,出于某种原因,dotCover 似乎不起作用。我尝试删除覆盖数据并再次运行测试,但结果是一样的。

我错过了什么?

最佳答案

我刚刚遇到了类似的事情。就我而言,我刚刚为我的单元测试添加了一个使用 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。

关于c# - 为什么代码覆盖率在 ReSharper 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61467440/

相关文章:

phpunit mock - 方法不存在

ios - 在 Swift 中重构后 UIViewController 测试失败

c# - Linq 隐式转换为类型

.net - 如何创建支持多个项目(如列表框)的 Winform 用户控件

c++ - Stat() 函数返回值 -1,因此无法访问文件属性。我该如何纠正这个问题?

c - Windows API 使用

java - 在单元测试中,我们是否也测试父类(super class)?

c# - 运行需要 "Security Message"的命令行 (cmd)

c# - 如何在 .NET 中创建值类型集合?

c# - 减少 if 语句本身