在每个 MSTest 测试方法的开头重置静态变量
本文关键字:静态 变量 开头 MSTest 测试方法 | 更新日期: 2023-09-27 17:57:25
我在同一测试程序集中以以下方式(使用相同的静态变量)具有 N 个 MSTest 测试类和方法。
[TestClass]
public class TestClass1
{
[TestMethod]
public void TestMethod1A()
{
MyClass.StaticVariable = 0;
MyClass.StaticVariable = MyClass.StaticVariable + 1;
Assert.AreEqual(1, MyClass.StaticVariable)
}
[TestMethod]
public void TestMethod1B()
{
MyClass.StaticVariable = 0;
MyClass.StaticVariable = MyClass.StaticVariable + 1;
Assert.AreEqual(1, MyClass.StaticVariable)
}
}
[TestClass]
public class TestClass2
{
[TestMethod]
public void TestMethod2A()
{
MyClass.StaticVariable = 0;
MyClass.StaticVariable = MyClass.StaticVariable + 1;
Assert.AreEqual(1, MyClass.StaticVariable)
}
[TestMethod]
public void TestMethod2B()
{
MyClass.StaticVariable = 0;
MyClass.StaticVariable = MyClass.StaticVariable + 1;
Assert.AreEqual(1, MyClass.StaticVariable)
}
}
这些测试保证通过吗?我的观点是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;
}