我有使用Singleton的代码(这恰好适用于网站,因此Singleton只有一个Request的范围;每个Request都有自己的单例)。
我的代码(碰巧在HttpModule中)执行以下操作:
1 - 检查Singleton对象是否为null,如果是,则初始化它。 2 - 沿着以下行更新此单例对象上的属性:
if(A)
{
SingletonHolder.Current.X = Y;
}
else
{
SingletonHolder.Current.X = Z;
}
然后,我希望围绕此方法进行一些单元测试,以检查逻辑是否正确。让我们说为了论证我们需要以下4个测试:
这些测试在一次运行时都能很好地工作,但是当使用NUnit测试运行器在VS2013中运行时,我们会遇到一些失败,因为每个测试都是并行运行的,而且测试中的方法正在更新相同的单例对象的属性具有不同的值。
有关解决此问题的模式的任何建议吗?
由于
格里夫
答案 0 :(得分:0)
您可能只需要在使用SetUpAttribute
方法修饰的测试夹具中提供一个方法,以便在运行每个测试方法之前执行初始设置,并使用{{1在每个测试方法之后运行。找到了nUnit TearDownAttribute
的文档here。
这将允许您(在您的SetUp方法中)初始化您的Singleton对象,然后(在您的TearDown方法中)将Singleton对象设置为SetUpAttribute
,以便SetUp可以重新实例化/初始化对象下一次测试。