gpt4 book ai didi

.net - 如何加速 WCF “unit” 测试? (创建/关闭 ServiceHost 很慢...)

转载 作者:行者123 更新时间:2023-12-04 16:56:48 24 4
gpt4 key购买 nike

我正在为在 WCF 中实现的服务器编写一些测试,因为消息很复杂,并且对我希望在测试中包含 WCF 的客户端进行了回调。

(您可能希望将这些“适合”或“集成测试”称为不是单元测试,WCF 两侧的代码将有更多不使用 WCF 的详细单元测试。)

由于我的服务器保持状态并且我希望检查所有 channel 是否关闭而没有错误,我有如下代码:

    [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();
}

但是我的测试很慢....

如何加快 ServiceHost 的创建和销毁?

最佳答案

我们停止编写使用 WCF 的集成测试。在合理的时间内启动并运行整个系统需要付出太多的努力。

相反,我们正在测试隔离的逻辑。数据契约的序列化是该领域最大的错误来源,也独立于 WCF 进行测试(仅调用 DataContractSerializer)。经过一些初步的努力,WCF 本身直到现在才遇到麻烦。

我不确定这是否有帮助。

编辑:想想你实际在测试什么。

  • 您希望发现什么样的错误?
  • 真的没有其他方法可以测试吗? (例如,我们找到了另一种解决序列化问题的方法)
  • 发生这种错误的几率有多大?开发人员容易避免吗?
  • 通过手动测试找到它有多难? (例如,序列化问题很难发现,因为只有一个属性可能会丢失,另一方面,如果客户端甚至无法连接,则很容易找到)
  • 关于.net - 如何加速 WCF “unit” 测试? (创建/关闭 ServiceHost 很慢...),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1803051/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com