В настоящее время я начинаю вводить концепцию 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!";
}
}
}
Кто-нибудь знает, что мне делать по другому?