Como posso usar objetos simulados nos meus testes de unidade e ainda usar a cobertura de código?

Atualmente, estou começando a introduzir o conceito de objetos Mock nos meus testes de unidade. Em particular, estou usando a estrutura Moq. No entanto, uma das coisas que notei é que, de repente, as classes que estou testando usando essa estrutura estão mostrando uma cobertura de código de 0%.

Agora entendo que, como estou zombando da classe, ela não está executando a própria classe ... mas como escrevo esses testes e o Code Coverage retorna resultados precisos? Preciso escrever um conjunto de testes que usam Mocks e um conjunto para instanciar a classe diretamente.

Talvez eu esteja fazendo algo errado sem perceber?

Aqui está um exemplo de mim tentando testar a unidade uma classe chamada "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!";
        }
    }
}

Alguém sabe o que devo fazer de diferente?

questionAnswers(4)

yourAnswerToTheQuestion