我试图对我编写的WCF主机管理引擎进行单元测试。引擎基本上是根据配置动态创建ServiceHost实例。这使我们能够动态地重新配置哪些服务可用,而不必关闭所有服务并在添加新服务或删除旧服务时重新启动它们。
但是,由于ServiceHost的工作方式,在对该主机管理引擎进行单元测试时遇到了困难。如果已经为特定的端点创建,打开了一个ServiceHost,但尚未关闭它,则无法为该端点创建另一个ServiceHost,从而导致异常。由于现代单元测试平台可以并行执行其测试执行,因此我没有有效的方法来对这段代码进行单元测试。
我曾经使用过xUnit.NET,希望由于它的可扩展性,我可以找到一种方法来强制其顺序运行测试。但是,我没有任何运气。我希望有人在SO上遇到类似的问题,并且知道如何使单元测试连续运行。
注意:ServiceHost是由Microsoft编写的WCF类。我没有能力更改其行为。仅将每个服务端点托管一次也是一种正确的行为……但是,这特别不利于单元测试。
TestServer
在docker中运行多个时遇到类似的问题。因此,我不得不序列化集成测试。