C# 测试初始化vs分类初始化

C# 测试初始化vs分类初始化,c#,mstest,vs-unit-testing-framework,C#,Mstest,Vs Unit Testing Framework,MSTest中的TestInitialize与ClassInitialize有什么区别?每种方法的优缺点是什么 我的印象是,TestInitialze每次都应该与每个测试一起运行?对吗?每次有任何类的新实例时,ClassInitialize都会运行吗 这两个属性仅适用于它们所属的类(因此也适用于测试) TestInitialize在声明属性的同一类的上声明的每个测试之前运行 ClassInitialize仅在声明属性的类初始化时运行。换言之,它不会适用于所有班级。仅适用于包含ClassIniti

MSTest中的
TestInitialize
ClassInitialize
有什么区别?每种方法的优缺点是什么


我的印象是,
TestInitialze
每次都应该与每个测试一起运行?对吗?每次有任何类的新实例时,
ClassInitialize
都会运行吗

这两个属性仅适用于它们所属的类(因此也适用于测试)

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

ClassInitialize
仅在声明属性的类初始化时运行。换言之,它不会适用于所有班级。仅适用于包含
ClassInitialize
方法的类


如果希望在所有测试或类初始化之前运行一次的方法,请使用

ClassInitialize和AssemblyInitialize的用例是什么?我很难获得ClassInitialize的实际用例…一个用例是使用需要很长时间才能运行的初始化方法为DLL运行集成测试。ClassInitialize可用于在批测试开始时执行初始化,ClassCleanup将调用DLL的terminate方法。另一种情况是设置具有大量注入依赖项和模拟设置的对象。我有一些包含100多行的测试类,否则需要在每个测试中使用。@DPH TestInitialize适用于重复代码,只有在运行代码需要很长时间时,才使用ClassInitialize