由于属性不在C#中继承(至少我认为它们没有) - 在运行MyTestMethod
测试时,以下代码如何仍然显示Hello弹出窗口:
[TestClass]
public class BaseTestClass {
[TestInitialize]
public void Foo() {
System.Windows.Forms.MessageBox.Show("Hello");
}
}
[TestClass]
public class TestClass : BaseTestClass {
[TestMethod]
public void MyTestMethod() {
Assert.IsTrue(true);
}
}
答案 0 :(得分:4)
默认情况下会继承属性,但可以禁用此属性 - 请参阅AttributeUsage.Inherited
如果使用AttributeUsage
属性修饰属性定义,则可以设置此属性:
[AttributeUsage(AttributeTargets.Class, Inherited = false)]
public class MyAttribute : Attribute
{
}
答案 1 :(得分:0)
如果不能正常工作方法Foo虚拟并只是覆盖它,并将TestInitialize放在TestClass覆盖方法
[TestClass]
public class BaseTestClass
{
public virtual void Foo()
{
System.Windows.Forms.MessageBox.Show("Hello");
}
}
[TestClass]
public class TestClass : BaseTestClass
{
[TestInitialize]
public override void Foo()
{
base.Foo();
}
[TestMethod]
public void MyTestMethod()
{
Assert.IsTrue(true);
}
}