目前我开始将 Mock 对象的概念引入到我的单元测试中。特别是我正在使用 Moq 框架。然而,我注意到的一件事是,我正在使用这个框架测试的类突然显示代码覆盖率为 0%。
现在我明白了,因为我只是在模拟这个类,它本身并没有运行实际的类......但是我如何编写这些测试并让代码覆盖率返回准确的结果?我是否必须编写一组使用 Mocks 的测试和一组直接实例化类。
也许我在没有意识到的情况下做错了什么?
这是我尝试对名为“MyClass”的类进行单元测试的示例:
using Moq;
using NUnitFramework;
namespace MyNameSpace
{
[TestFixture]
public class MyClassTests
{
[Test]
public void TestGetSomeString()
{
const string EXPECTED_STRING = "Some String!";
Mock<MyClass> myMock = new Mock<MyClass>();
myMock.Expect(m => m.GetSomeString()).Returns(EXPECTED_STRING);
string someString = myMock.Object.GetSomeString();
Assert.AreEqual(EXPECTED_STRING, someString);
myMock.VerifyAll();
}
}
public class MyClass
{
public virtual string GetSomeString()
{
return "Hello World!";
}
}
}
有谁知道我应该做些什么不同的事情?