我的测试有一个基类,它按以下方式组成:
[TestClass]
public abstract class MyBaseTest
{
protected static string myField = "";
[ClassInitialize]
public static void ClassInitialize(TestContext context)
{
// static field initialization
myField = "new value";
}
}
现在我正在尝试创建一个从基础继承的新测试,具有以下签名:
[TestClass]
public class MyTest : MyBaseTest
{
[TestMethod]
public void BaseMethod_ShouldHave_FieldInitialized()
{
Assert.IsTrue(myField == "new value");
}
}
ClassInitialize
永远不会被子测试调用...在 MsTest 上使用带有继承的测试初始化的真实和正确方法是什么?
最佳答案
不幸的是,您无法通过这种方式实现这一目标,因为 ClassInitializeAttribute Class不能继承。
继承的属性可以被使用它的类的子类使用。由于 ClassInitializeAttribute
不能被继承,当 MyTest
类被初始化时 MyBaseTest
类的 ClassInitialize
方法不能被继承被调用。
尝试用其他方法解决。一种效率较低的方法是在 MyTest
中再次定义 ClassInitialize
方法,并只调用基本方法而不是复制代码。
关于c# - MsTest类初始化和继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15944504/