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?