假设 Visual Studio.NET 2008 和 MsTest 用于运行单元测试。当系统基于服务容器和依赖注入时,单元测试自然需要设置服务。
这些服务是否应该设置在所有单元测试都派生自每个单元测试类或在每个单元测试类中的基类中。如果它们应该在基类中,有没有一种方法可以在不需要从派生类中调用它们的情况下执行TestInitialize
and方法,例如 base.Initialise?ClassInitialize
假设 Visual Studio.NET 2008 和 MsTest 用于运行单元测试。当系统基于服务容器和依赖注入时,单元测试自然需要设置服务。
这些服务是否应该设置在所有单元测试都派生自每个单元测试类或在每个单元测试类中的基类中。如果它们应该在基类中,有没有一种方法可以在不需要从派生类中调用它们的情况下执行TestInitialize
and方法,例如 base.Initialise?ClassInitialize
MSTest 框架将在整个对象(所有基类)中搜索标记为 的方法Test*
。就像在单元测试类中声明它们一样,您不必显式调用它们。
使用 2008,您应该能够在基类上使用 [TestInitialize],并且只要您不在层次结构中的某个位置添加另一个 [TestInitialize],就应该调用它。你也可以用虚方法来做事。
我更喜欢在实际的单元测试类中使用Test*
和标记的方法。Class*
如果在基类上定义它们,则不能向它们添加测试特定活动。相反,在您的基类上使用静态和实例构造函数和终结器。