相关疑难解决方法(0)

如何在单元测试中使用Mock对象并仍使用代码覆盖率?

现在我开始将Mock对象的概念引入我的单元测试中.特别是我正在使用Moq框架.但是,我注意到的一件事是突然我使用这个框架测试的类显示代码覆盖率为0%.

现在我明白了,因为我只是在嘲笑这个类,它没有运行实际的类本身....但是我如何编写这些测试并让Code Coverage返回准确的结果呢?我是否必须编写一组使用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!";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有谁知道我应该采取哪些不同的做法?

.net c# unit-testing code-coverage moq

16
推荐指数
2
解决办法
4万
查看次数

标签 统计

.net ×1

c# ×1

code-coverage ×1

moq ×1

unit-testing ×1