.NET单元测试类之间的共享上下文

时间:2016-04-12 17:09:28

标签: c# .net unit-testing mstest

我理解理想的单元测试不应该在它们之间共享任何上下文,但我有一个两难的境地:我正在尝试对一个只有一个可以一次实例化的单一许可证的软件进行单元测试。

.NET单元测试似乎并行运行,所以当我点击“运行所有测试”时,这些类都会同时运行,而且大多数都会因为无法获得许可而失败。

所以我看到两个相互排斥的问题:

  • 如何在C#单元测试类之间共享上下文?
  • OR 如何强制.NET单元测试 NOT 并行运行?

澄清: 许可软件不是我想要测试的,它只是我需要进行测试的工具

2 个答案:

答案 0 :(得分:1)

通常情况下,我认为Singleton是一种反模式,因为它无法进行单元测试。 但这是一个很好的用例Singleton。 一个真正的单例,带有私有构造函数和静态构造函数,只运行一次,并且是线程安全的。

通过这种方式,您可以保持测试并行运行。

答案 1 :(得分:0)

我不确定这是否是您可能正在寻找的内容,但是如果您同时运行所有测试但是每个测试都在单独的AppDomain上运行会有效吗?

作为参考,我使用了您可以通过实际测试的跨域代理:https://msdn.microsoft.com/en-us/library/system.appdomain.docallback(v=vs.110).aspx

让我知道这是否有效!