Я хочу протестировать код ниже. Я работал с MSTest и пытался изучить Microsoft Moles и RhinoMocks. Но я не мог заставить ни одного из них помочь мне. Я знаю, что могу кардинально изменить код, чтобы использовать интерфейсы, которые сделают его более тестируемым, но для этого мне потребуется кодировать интерфейсы и реализации, инкапсулирующие TcpClient, NetworkStream, StreamWriter и StreamReader.
Я уже написал интеграционный тест для этого, и я думаю, что кто-то, кто разбирается в кротах, может довольно легко выполнить модульные тесты, не меняя код.
using (TcpClient tcpClient = new TcpClient(hostName, port))
using (NetworkStream stream = tcpClient.GetStream())
using (StreamWriter writer = new StreamWriter(stream))
using (StreamReader reader = new StreamReader(stream))
{
writer.AutoFlush = true;
writer.Write(message);
return reader.ReadLine();
}
writer
и вызов методаreader
. Здесь не так много поведения, и это не очень интересно для тестирования. Теперь было бы интересно протестировать классы, которые используют этот метод, поэтому я бы полностью реализовал этот класс как интерфейс и тестировал компоненты, которые вызывают его. - person Merlyn Morgan-Graham   schedule 16.12.2011