在我的一个单元测试类中,我正在进行多项测试来测试方法的响应。它们是非常相似的测试,因此我创建了一个私有(private)方法来避免多次编写基本相同的测试(我很懒)。
问题是,在 Visual Studio 中,方法本身上方的“传递”信息并未显示调用私有(private)方法的单元测试的覆盖范围。
示例方法
单元测试示例
如您所见,单元测试都调用 MethodForTesting1,尽管只有第一个单元测试(直接调用它的单元测试)覆盖了该方法。
有什么办法可以解决这个问题,或者 Visual Studio 测试工具只是不像单元测试中的私有(private)方法吗?
编辑 快速补充一下,我是单元测试的新手,因此为了加分,在查看类时是否有更好的方法来衡量代码覆盖率?
编辑2
为了解决那些指出我忘记了最后一个方法上面的 [TestMethod]
的快速答案,它仍然不显示代码覆盖率
最佳答案
理想情况下,您的单元测试应编写如下:
[TestMethod]
public void TestMethod21()
{
Class1 cls = new Class1();
Assert.AreEqual("Jackie", cls.GetNewName("Jack"));
}
[TestMethod]
public void TestMethod31()
{
Class1 cls = new Class1();
Assert.AreEqual("Johnny", cls.GetNewName("John"));
}
您不应该使用常见的私有(private)方法,例如包含来自不同测试方法的断言的Verify_MethodForTesting_EchosString(string testString) - 这不是最佳实践。您的测试用例不容易理解。
还应该为每个测试方法创建对象 - cft = new ClassForTesting(),当测试并行运行时,共享对象可能会产生问题。
关于c# - 单元测试未显示为覆盖方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46885362/