Rik*_*ōhō 7 c# resharper unit-testing visual-studio 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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这个示例单元测试:
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后在 ReSharper 的“Unit Test Sessions”窗口中,选择“Cover Unit Tests”,如下所示:
此操作运行我的测试,当我移动到 ReSharper 的“单元测试覆盖率”窗口时,我看到所有覆盖率百分比为 0%,并显示一条警告消息,指出“某些测试的覆盖率信息不存在或已过时”,如下所示:
此外,在 Visual Studio 代码编辑器窗口中,我的类中的所有语句都标记为“未覆盖语句”,如下所示:
因此,出于某种原因,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。