C# 如何使用[AssemblyInitialize]或[ClassInitialize]属性将数据加载到单元测试中,并且仍然保留数据

C# 如何使用[AssemblyInitialize]或[ClassInitialize]属性将数据加载到单元测试中,并且仍然保留数据,c#,visual-studio-2010,unit-testing,C#,Visual Studio 2010,Unit Testing,我知道我遗漏了一条关于静态方法的重要规则,但是如果你以后不能将它用于不同的目的,那么初始化它的意义会是什么呢 我有一个名为LoadValidConfig的方法和一个名为configSetup的私有成员 [TestClass] public class ConfigControllerTest { private ConfigSetup configSetup; private TestContext testContextInstance;

我知道我遗漏了一条关于静态方法的重要规则,但是如果你以后不能将它用于不同的目的,那么初始化它的意义会是什么呢

我有一个名为LoadValidConfig的方法和一个名为configSetup的私有成员

     [TestClass]
     public class ConfigControllerTest
     {
      private ConfigSetup configSetup;
      private TestContext testContextInstance;

           [ClassInitialize]
           public static void LoadValidConfig(TestContext context)
           {
                ConfigSetup setup;
                ConfigController.LoadConfig(out setup);
           }

           [TestMethod]
           public void ConfigTest1()
           { 
            //example test
           }
    }
我无法使用ConfigController.LoadConfig()方法填充的configSetup引用获取静态方法来访问和初始化configSetup类


我真的需要一些指导。我以前曾使用N Unit分别进行[setup]和[teardown]初始化和清理,但现在的工作方式不同

[ClassInitialize]
在静态上下文中运行,并在任何测试方法运行之前运行。您可能正在寻找用于实例初始化方法的
[TestInitialize]
,它类似于NUnit的
[Setup]

然后尝试在LoadConfig方法之后分配字段:

[TestInitialize]
public void LoadValidConfig()
{
    ConfigSetup setup;
    ConfigController.LoadConfig(out setup);
    configSetup = value;
}

(或者,如果这更适合您,您可以保持ClassInitialize,并将configSetup设置为静态)。

您知道您永远不会写入configSetup变量,对吗?如果多个测试需要相同的设置怎么办?[TestInitialize]不是冗余的,因为它将加载相同的数据吗?