Ian*_*ose 5 .net wcf unit-testing
我正在为在WCF中实现的服务器编写一些测试,因为消息很复杂,并且对我希望在测试中包含WCF的客户端进行回调.
(您可能希望将这些"适合"或"集成测试"称为单元测试,WCF两侧的代码将具有更多不使用WCF的详细单元测试.)
由于我的服务器保持状态,我希望检查所有通道是否正常关闭,我的代码如下:
[SetUp]
public void SetUp()
{
//TODO find a fee port rathern then hard coding
endPointAddress = "net.tcp://localhost:1234";
mockEngineManagerImp = new Mock<IEngineManagerImp>();
EngineManager engineManager = new EngineManager(mockEngineManagerImp.Object);
serviceHost = new ServiceHost(engineManager);
serviceHost.AddServiceEndpoint(
typeof(IEngineManager),
new NetTcpBinding(SecurityMode.None),
endPointAddress);
serviceHost.Open();
}
[TearDown]
public void TearDown()
{
serviceHost.Close();
}
Run Code Online (Sandbox Code Playgroud)
但是我的测试很慢......
如何加快创建和销毁我的ServiceHost?
我们停止编写使用WCF的集成测试.在合理的时间内完成整个系统的运行是一项太多的努力.
相反,我们正在测试孤立的逻辑.数据合同的序列化是该领域中最大的错误来源,也是独立于WCF(仅调用DataContractSerializer)进行测试的.经过一些初步的努力,WCF本身直到现在都没有制造麻烦.
我不确定这是否有帮助.
编辑:想想你实际测试的是什么.
感谢所有出色的答案 \xe2\x80\x93 他们都包含有用的指针,
\n\n我发现我的很多测试都没有关闭客户端通道,这使得服务器通道的关闭要等到客户端的 TCP 连接超时。
\n\n解决这个问题后,速度提高了 10 倍以上。
\n 归档时间: |
|
查看次数: |
722 次 |
最近记录: |