Я только что закончил книгу «Искусство модульного тестирования» и получил архитектурный вопрос о тестовом шаблоне.создание интерфейсов для издевательских библиотек dotnet
Для тестирования, если используется метод внешней библиотеки, книга советует сделать оболочку с интерфейсом. Таким образом, вы можете использовать интерфейс для издевательств. Я сделал пример для использования метода .net File.Exists
public interface IFile
{
bool Exists(string path);
}
public class File : IFile
{
bool IFile.Exists(string path)
{
return System.IO.File.Exists(path);
}
}
[TestMethod]
[ExpectedException(typeof(System.IO.FileNotFoundException))]
public void Constructor_WithNonExistingFile_ThrowsFileNotFoundException()
{
Mock<IFile> fileMock = new Mock<IFile>();
Mock<ICompositionContainer> compositionMock
= new Mock<ICompositionContainer>();
fileMock.Setup(f => f.Exists(It.IsAny<string>())).Returns(false);
Loader<object> loader = new Loader<object>(
"testfile",
fileMock.Object,
compositionMock.Object);
}
Мой вопрос об этом, если это хорошая практика, и если да, то я должен сделать интерфейсы и оберток для всех .net методов/классов Я хочу контрольная работа?
Чтобы быть более точным, вы спрашиваете о написании оберток для всех методов/классов .net **, используемых вашим кодом **, который вы хотите проверить. Вы не тестируете методы/классы .net. – BartoszKP
Точно, я только хочу проверить свой код, но мне нужно проверить, правильно ли он использует библиотеки. –
Честно говоря, не очень-то ответить здесь, как я думаю, у вас нет выбора. – BartoszKP