所以这是一个示例单例:
public class Singleton
{
private static Singleton _instance = new Singleton();
private Singleton()
{
//do stuff
}
public static Singleton Get()
{
return _instance;
}
}
我正在尝试在这个单例类上运行多个测试,第一个自然而然地总是有效。基本上,我可以看到当我创建一个new Singleton()
构造函数时被调用。或者,当我调用Singleton.Get()
构造函数时。 测试单独工作正常,但是静态字段已设置,即使我手动将其设置为 null,它仍然不会为下一次测试自行重置。这对我来说是个问题,因为自动化测试在这里很重要。那么我怎样才能让它自己重置呢?
到目前为止,我研究了 AppDomain 并发现我可以将每个测试放入自己的程序集中并手动运行它。但是,当然,VS已经为每个程序集使用了一个唯一的 AppDomain,这将允许自动发生这种情况,但这是很多测试程序集,看起来有点傻。我正在寻找替代方案。
注意:我不想要关于代码质量的建议。 这是我正在测试的代码,而不是我编写的代码。在我先测试之前,我不会更改代码。 我对此进行了彻底的研究,并没有找到一个没有用“你不应该使用单例”来回答的问题。我对代码建议不感兴趣。这是 StackOverflow,而不是 CodeReview。
要求提供额外信息
我目前正在使用 Visual Studio 的内置测试框架运行测试。我希望它在移至 MSBuild 时仍然有效。这并不排除手动触发测试的外部应用程序,但它确实使它更难做到。