В настоящее время я начинаю вводить концепцию объектов Mock в свои модульные тесты. В частности, я использую структуру Moq. Тем не менее, одна из вещей, которые я заметил, это то, что внезапно классы, которые я тестирую с использованием этой структуры, показывают покрытие кода 0%.
Теперь я понимаю, что, поскольку я просто издеваюсь над классом, он не запускает сам фактический класс.... но как я могу написать эти тесты и получить Code Coverage верные результаты? Должен ли я писать один набор тестов, которые используют Mocks и один набор для непосредственного создания класса.
Возможно, я что-то делаю неправильно, не осознавая этого?
Вот пример того, как я пытаюсь выполнить Unit Test класс под названием 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!";
}
}
}
Кто-нибудь знает, что я должен делать по-другому?