gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 13:47:49 25 4
gpt4 key购买 nike

我按照以下方式(使用相同的静态变量)在同一个测试程序集中有 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支持多线程,但需要turn it on在测试设置文件中。默认情况下,所有测试都将同步运行。

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

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

关于c# - 在每个 MSTest 测试方法开始时重置静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14671586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com