【发布时间】:2014-04-10 21:55:54
【问题描述】:
MSTest 中的TestInitialize 与ClassInitialize 有什么区别?各有什么优缺点?
我的印象是TestInitialze 应该每次都运行 EACH 测试?那是对的吗?并且ClassInitialize 会在每次任何类的新实例时运行?
【问题讨论】:
标签: c# mstest vs-unit-testing-framework
MSTest 中的TestInitialize 与ClassInitialize 有什么区别?各有什么优缺点?
我的印象是TestInitialze 应该每次都运行 EACH 测试?那是对的吗?并且ClassInitialize 会在每次任何类的新实例时运行?
【问题讨论】:
标签: c# mstest vs-unit-testing-framework
这两个属性仅适用于它们所属的类(因此也适用于测试)。
TestInitialize在每个测试之前运行,该测试在声明属性的同一类上声明。
ClassInitialize仅在声明属性的类的初始化时运行。换句话说,它不会为每个班级运行。仅适用于包含ClassInitialize 方法的类。
如果您想要一个在所有测试或类初始化之前运行一次的方法,请使用AssemblyInitialize。
【讨论】:
由于 ClassInitialize 和 ClassCleanUp 是静态的,即使 MSTest 可以创建测试类的多个实例,它们也只会执行一次。
您可以在此处阅读更多信息:That Pesky MSTest Execution Ordering.. docs.microsoft.com
【讨论】: