Как выполнить модульное тестирование класса, полученного из NetworkStream? - PullRequest
3 голосов
/ 16 июля 2011

В рамках проекта у меня есть класс, производный от NetworkStream.В этом случае он предоставляет свернутые реализации методов, таких как Read и ReadByte, для обеспечения некоторой специфичной для контекста безопасности (он вызывает базовые методы с некоторой дополнительной логикой).

Но тестирование - это проблема.Классу требуется Socket в конструкторе (конкретный тип) и mocking, который не работает для меня (используя Moq здесь, возможно, что-то вроде TypeMock, но я бы хотел избежать дорогостоящих инструментов).

Другая альтернатива можетсоздавать, а не наследовать, и создавать класс, который оборачивает NetworkStream и реализует мой собственный интерфейс, похожий на NetworkStream.Но это тоже проблема.Большинству потребителей потоков в BCL, таких как StreamReader и т. Д., Требуется конкретный Stream или производный тип, и поэтому он не будет работать с моим составным классом.

Итак, кто-нибудь может подумать о каких-либо альтернативах?Это не то, что я бы с радостью оставил без приличного освещения - это та область, где многое может пойти не так, и она должна быть прочной.

1 Ответ

0 голосов
/ 16 июля 2011

Возможно, вы захотите взглянуть на проект pex and moles http://research.microsoft.com/en-us/projects/pex/. Точнее, родинки. Вот прямая ссылка на начало работы. http://research.microsoft.com/en-us/projects/pex/molestutorial.pdf

...