Sesler
internal void StartPipeServer(NamedPipeServerStream pipeServer)
{
Thread thread = new Thread(WaitForConnections);
thread.Start(pipeServer);
}
internal void WaitForConnections(object o)
{
NamedPipeServerStream pipe = (NamedPipeServerStream)o;
pipe.WaitForConnection();
}
HTH, RiP:
using (NamedPipeServerStream input = new NamedPipeServerStream("Test", PipeDirection.InOut))
using (NamedPipeClientStream pipeClient = new NamedPipeClientStream("Test"))
using (MemoryStream output = new MemoryStream())
using (StreamReader inSerial = new StreamReader(pipeClient))
using (StreamWriter outSerial = new StreamWriter(svpConsumer))
{
StartPipeServer(input);
pipeClient.Connect();
using (TestingClass myTest = new TestingClass(onSerial, outSerial))
{
input.Write(...);
input.Flush(...);
Assert on checking output
}
}
?
Eğer birim testi demek ise, olabilir:
- sargıyı bir belki arayüzü, iport
- bir SerialPort gerektirir sınıfa bu geçirin ver seri port
- etrafında sarıcı oluşturma
- Mock
geçirilen SerialPost
internal interface IPort
{
void Connect();
//Other members
}
internal class SerialPort : IPort
{
public void Connect()
{
//Implementation
}
}
public class DataRetriever
{
private IPort _port;
public DataRetriever(IPort port)
{
_port = port;
}
public void ReadData()
{
_port.Connect();
}
}
Şimdi Data Retriever sınıfını test edebilirsiniz. Çerçeveye yaklaştığınızda (SerialPort sarıcı gibi) beklenmedik bir şekilde test edemezsiniz. Bunu entegrasyon testlerine bırakmanız gerekecek.
Teşekkürler Khurram, Zaten iyi çalışan bir sanal seri sürücüm var, ama benim bağlantı noktası davranışını el ile test etmemi gerektirir. 'Dostum' bağlantı noktasını açıp veri göndermeyi otomatikleştirebilirim, ancak bunu yapmanın daha temiz bir yolunu tercih ederim. Önerinizi yanlış anlamadıkça. –