C# MSTest每次都调用构造函数

C# MSTest每次都调用构造函数,c#,visual-studio,unit-testing,mstest,C#,Visual Studio,Unit Testing,Mstest,我得到了一个单元测试(MStest) 有一个测试类有很多测试方法。 如果我从TestExplorer运行所有方法,每个方法都将调用构造函数。 是否有任何方法可以跨所有这些方法保存TestClass实例?好的,有多个不同的属性指示何时应该调用一个方法。如果希望安装程序对所有测试只运行一次,则应使用ClassInitialize-属性,而不是构造函数: [TestClass] class MyTests { [ClassInitialize] public static void S

我得到了一个单元测试(MStest) 有一个测试类有很多测试方法。 如果我从TestExplorer运行所有方法,每个方法都将调用构造函数。
是否有任何方法可以跨所有这些方法保存TestClass实例?

好的,有多个不同的属性指示何时应该调用一个方法。如果希望安装程序对所有测试只运行一次,则应使用
ClassInitialize
-属性,而不是构造函数:

[TestClass]
class MyTests
{
    [ClassInitialize]
    public static void SetupTests(TestContext context) { ... }
}
从构造函数内部执行初始化只是一个坏主意,因为每个测试框架都有自己的计划,规定何时以及多久调用一次。相反,您应该使用在使用中具有确定性的属性


如果需要在每次测试之前进行初始化,可以使用
TestInitialize
-属性。

为什么测试类有构造函数?你在里面干什么?如果您想运行setup stuff,应该在一个属性为
OneTimeSetup
的方法中完成,该属性将为每个装置运行一次。或者
Setup
,它将在每次测试之前运行。我认为这些都是特定于NUnit的。但是MSTest有一个类似的概念AssemblyInitialize(每个程序集一次)、ClassInitialize(每个测试类一次)、TestInitialize(在类的每个测试之前)请共享一个。谢谢,这解决了我的问题。请更新您的答案,您需要添加一个参数TestContext。