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

时间:2011-03-17 21:25:48

标签: c# visual-studio-2010 unit-testing

我知道我遗漏了一条关于静态方法的重要规则,但是如果你以后不能用它来用于不同的目的,它会是初始化的重点吗?

我有一个名为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]初始化和清理,但这并不像那些那样工作。

1 个答案:

答案 0 :(得分:1)

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

然后尝试在LoadConfig方法之后指定字段:

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

(或者,你可以保留ClassInitialize,如果这更适合你,并使configSetup静态)。