我如何检查静态变量是否在单元测试期间被修改
How do i check if Static variables are modified during unittest
我正在使用一个相当大的测试集(超过 5000 种单独的测试方法),并且似乎有些测试有时会修改它们不应该修改的静态变量,所以我想知道是否有办法创建一个在所有其他测试期间测试变量是否已被修改的测试
我无法直接修改变量,但我可以编写单元测试并修改相关设置
我正在使用 C# 8.0 和 mstest v.2 在 VS 2017 中工作
谢谢
您可以在每次测试之前或之后将测试中的方法标记为 class 至 运行。
所以你可以这样做:
[TestClass]
public class MyTestClass
{
private int originalValue; // adjust the type as needed
[TestInitialize]
public void PreTest()
{
// remember the value before the test
originalValue = MyContainer.StaticValue; // or whatever it is called in your system
}
[TestCleanup]
public void PostTest()
{
// check the current value against the remembered original one
if (MyContainer.StaticValue != originalValue)
{
throw new InvalidOperationException($"Value was modified from {originalValue} to {MyContainer.StaticValue}!");
}
}
[TestMethod]
public void ExecuteTheTest()
{
// ...
}
}
其他属性见cheatsheet
我正在使用一个相当大的测试集(超过 5000 种单独的测试方法),并且似乎有些测试有时会修改它们不应该修改的静态变量,所以我想知道是否有办法创建一个在所有其他测试期间测试变量是否已被修改的测试
我无法直接修改变量,但我可以编写单元测试并修改相关设置
我正在使用 C# 8.0 和 mstest v.2 在 VS 2017 中工作
谢谢
您可以在每次测试之前或之后将测试中的方法标记为 class 至 运行。
所以你可以这样做:
[TestClass]
public class MyTestClass
{
private int originalValue; // adjust the type as needed
[TestInitialize]
public void PreTest()
{
// remember the value before the test
originalValue = MyContainer.StaticValue; // or whatever it is called in your system
}
[TestCleanup]
public void PostTest()
{
// check the current value against the remembered original one
if (MyContainer.StaticValue != originalValue)
{
throw new InvalidOperationException($"Value was modified from {originalValue} to {MyContainer.StaticValue}!");
}
}
[TestMethod]
public void ExecuteTheTest()
{
// ...
}
}
其他属性见cheatsheet