为什么单身人士难以进行测试?

时间:2016-07-12 07:12:56

标签: unit-testing design-patterns

我读过很多关于“Singleton难以测试”的话题。其中大多数发布于2010年和2011年。

它试图弄清楚为什么Singleton不适合使用PowerMock进行测试。但一切都很好,我仍然无法找到Singleton的魔鬼。

您能否在测试中提供Singleton的任何示例并指出问题?

2 个答案:

答案 0 :(得分:1)

从.Net的角度来看,我认为这是因为许多模拟框架不容易支持提供模拟的能力,因为Singleton模式是commonly implemented,即static字段,没有构造函数和只读属性。使用这种典型的模式几乎不能提供外部代码。

但是,您可以使用“Ambient Context”模式来达到相同的效果并支持“可测试性”。

答案 1 :(得分:1)

另一个有趣的问题,取决于您的测试框架,单例可能会跨测试维护状态。

这使得很难保证在一组单元测试中看到的症状是由该组测试引起的,而不是之前运行的测试。或者,如果您有一个随机重新排序测试的测试框架,您可能会发现测试的行为在运行之间发生了变化。