假设使用Visual Studio.NET 2008和MsTest运行单元测试,当一个系统基于服务容器和依赖项注入时,单元测试自然需要设置服务。这些服务应该在所有单元测试派生的基类中设置,还是在每个单元测试类中设置?如果应该在一个基类中设置,是否有一种方法可以执行TestInitialize和ClassInitialize方法,而不需要从派生类调用它们,例如base.Initialize?
MSTest框架将在整个对象(所有基类)中搜索标记为Test*
的方法。 就像在单元测试类上声明它们时一样,您不必显式调用它们。
在2008年,你可以在一个基类上使用[TestInitialize],只要你不在继承层次结构中添加另一个[TestInitialize],它就会被调用。你也可以使用虚方法实现相同的效果。
我更喜欢将标记为Test*
和Class*
的方法放在实际的单元测试类中。如果您将它们定义在基类中,则无法向其添加特定于测试的活动。相反,请使用基类上的静态和实例构造函数以及终结器。