TestInitialize与ClassInitialize

时间:2014-04-10 21:55:55

标签: c# mstest vs-unit-testing-framework

MSTest中TestInitializeClassInitialize的区别是什么?每个人的优点是什么?

我认为TestInitialze应该每次都进行EACH测试吗?那是对的吗?并且ClassInitialize每次都会在任何类的新实例中运行?

2 个答案:

答案 0 :(得分:93)

这两个属性仅适用于它们所属的类(以及测试)。

TestInitialize在声明属性的相同类上声明的每个测试之前运行

ClassInitialize在声明属性的类的初始化时仅运行 。换句话说,它不适用于每个班级。仅适用于包含ClassInitialize方法的类。

如果您想要一个在所有测试或类初始化之前运行一次的方法,请使用AssemblyInitialize

答案 1 :(得分:-1)

<块引用>

由于 ClassInitialize 和 ClassCleanUp 是静态的,因此即使 MSTest 可以创建测试类的多个实例,它们也只会执行一次。

您可以在此处阅读更多相关信息:That Pesky MSTest Execution Ordering.. docs.microsoft.com