C# 在每个MSTest测试方法开始时重置静态变量

C# 在每个MSTest测试方法开始时重置静态变量,c#,unit-testing,asynchronous,concurrency,mstest,C#,Unit Testing,Asynchronous,Concurrency,Mstest,在同一个测试程序集中,我有N个MSTest测试类和方法,它们采用以下方式(使用相同的静态变量) 这些考试保证通过吗?我的观点是,MSTest是否总是同步执行测试方法,在断言MyClass.StaticVariable之前只允许初始化和递增一次?以下情况会发生吗 1. TestMethod1A makes MyClass.StaticVariable 0 2. TestMethod2B increments MyClass.StaticVariable by 1 3. TestMethod1A i

在同一个测试程序集中,我有N个MSTest测试类和方法,它们采用以下方式(使用相同的静态变量)

这些考试保证通过吗?我的观点是,MSTest是否总是同步执行测试方法,在断言MyClass.StaticVariable之前只允许初始化和递增一次?以下情况会发生吗

1. TestMethod1A makes MyClass.StaticVariable 0
2. TestMethod2B increments MyClass.StaticVariable by 1
3. TestMethod1A increments MyClass.StaticVariable by 1 (making the value equal to 2)
4. TestMethod1A asserts (Fail!)

MSTest支持多线程,但您需要在测试设置文件中添加。默认情况下,所有测试都将同步运行

此外,如果要在每次测试运行时重置变量,可以在方法上放置一个属性,并且该方法将在该类中的每次测试之前运行:

[TestInitialize()]
public void TestInit()
{
    MyClass.StaticVariable = 0;
}

我对MSTest不是很有经验,但我经常使用NUnit,我的经验是NUnit在一个程序集中对所有测试进行排序(按字母顺序),并同步完成所有测试。我想MSTestIf也是如此,所以我会成为一个快乐的露营者。我甚至不需要按照特定的顺序运行测试,只要同步运行就足够了。谢谢John。只是想知道是否可以将参数传递给TestInit。如果MyClass.StaticVariable是一个对象,我们需要执行类似MyClass.StaticVariable=new StaticVariableClass(参数)的操作来重置,该怎么办。如果参数随每个单元测试方法的变化而变化,那么使用TestInitialize是否仍然可以实现这一点?@Harindaka如果参数需要随每个单元测试而变化,那么这应该在测试本身中,TestInitialize方法实际上不适用。
[TestInitialize()]
public void TestInit()
{
    MyClass.StaticVariable = 0;
}