が鳴り
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
}
}
?
あなたはユニットテストを意味する場合は、可能性:
- おそらくIPORT
- がSERIALPORT
を必要とするクラスにこれを渡し、ラッパーにインターフェースを与えるシリアルポート
- のラッパーを作成します。
- モック
で渡され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();
}
}
これで、Data Retrieverクラスをテストできます。 Unfortinatly(SerialPortラッパーなどの)フレームワークに近づくと、単体テストできません。統合テストに任せておく必要があります。
ありがとう、クルラム、私はすでにうまく動作していますが、手動でポートの動作をテストする必要がある仮想シリアルドライバを手に入れました。私は「バディ」ポートを開設してデータを送信することを自動化することができましたが、私はむしろよりクリーンな方法で資金を調達したいと考えていました。私があなたの提案を誤解していない限り。 –