C# 如何使用[AssemblyInitialize]或[ClassInitialize]属性将数据加载到单元测试中,并且仍然保留数据
我知道我遗漏了一条关于静态方法的重要规则,但是如果你以后不能将它用于不同的目的,那么初始化它的意义会是什么呢 我有一个名为LoadValidConfig的方法和一个名为configSetup的私有成员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;
[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]不是冗余的,因为它将加载相同的数据吗?