c# - .NET 单元测试 - 如何区分变量初始化的 TestMethods

标签 c# .net unit-testing

我想在 [TestInitialize] 方法中初始化经常使用的变量,但我不希望为每个测试方法初始化相同的变量。有没有办法通过装饰器或类似的东西来区分测试方法?例如

[TestInitialize]
public Setup()
{
     //pseudocode
     if VariablesContainLetters
       var1 = a; var2 = b; var3 = c;
     else if VariablesContainNumbers
       var4 = 1; var5 = 2; var6 = 3;
}

[TestMethod]
[VariablesContainLetters]
public method1() {}

[TestMethod]
[VariablesContainNumbers]
public method2() {}

这样我就可以为不同的测试方法初始化不同的变量?

最佳答案

这是我认为您正在努力实现的目标的示例。声明 Dictionary如果您愿意,可以将 string 替换为其他类型。 Bool、int、甚至对象。

[TestInitialize]
public Setup()
{
     Dictionary<string, string> variables = new Dictionary<string, string>();
     //pseudocode
     if VariablesContainLetters
       variables.Add("var1", "a");
       variables.Add("var2", "b");
     else if VariablesContainNumbers
       variables.Add("var4", "1");
       variables.Add("var5", "2");
}

[TestMethod]
[VariablesContainLetters]
public method1() {MessageBox.Show(variable["var1"]);} //prints "a"

[TestMethod]
[VariablesContainNumbers]
public method2() {MessageBox.Show(variable["var4"]);} //prints "1"

关于c# - .NET 单元测试 - 如何区分变量初始化的 TestMethods,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45513207/

相关文章:

c# - 我可以在不使用 "unsafe"的情况下使用二维数组编码 C 结构吗?

c# - (NetNative)NetworkInterface.GetNetworkInterfaces() 中的 NotImplementedException Win IoT Core 14393

android - TestScheduler 不起作用(Kotlin + RxJava2 + mockito)

c# - 在使用 SQL 查询的单元测试中模拟 IDocumentQuery

c# - Ajax ModalPopUp Window 根据特定条件

c# - 在 C#4.0 中使用默认值反射(reflect)构造函数

c# - 设置触发从父模板 (WPF) 传递下来的 'self' 属性

c# - List <myCustomClass>的集合初始值设定项无法正常工作,给出 “; expected”编译错误。为什么?

.net - "SELECT TOP 1 1"VS "IF EXISTS(SELECT 1"

matlab - 在 Matlab 中显示单元测试成功的消息