c# - MsTest类初始化和继承

标签 c# mstest

我的测试有一个基类,它按以下方式组成:

[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/

相关文章:

c# - asp.net mvc + knockout : Showing validation result from server side logic

c# - 使用数组在 C# 中进行数据驱动测试

c# - MVC 3 部分 View 上的 jQuery.load() 仅调用服务器一次(不是重新绑定(bind)问题)

c# - 如何在 Nest 中测试异常?

c# - MSTest:如果 3 个断言之一有效,如何断言肯定?

c# - AssemblyInitialize 方法在测试前不运行

.net - 使用 MSBuild 脚本运行 MSTest 单元测试

c# - 应用程序未从生产 Web 服务器运行

c# - MySqlBulkLoader 未导入第一列

c# - 如何获取 ArrayLength 类型表达式的 MemberInfo?