我正在使用MSTest(VS2008),我需要在测试之间保持一个变量。但是变量会在每次测试之间重新初始化。如何在MSTest中的测试之间持续变量?
根据this answer提到的第三点,
MSTest的总是实例化被执行的测试类的每个测试方法的一个新实例。
是否有直接的方法来保持测试之间的变量的值,或以某种方式抑制此行为?
我正在使用MSTest(VS2008),我需要在测试之间保持一个变量。但是变量会在每次测试之间重新初始化。如何在MSTest中的测试之间持续变量?
根据this answer提到的第三点,
MSTest的总是实例化被执行的测试类的每个测试方法的一个新实例。
是否有直接的方法来保持测试之间的变量的值,或以某种方式抑制此行为?
使用静态成员变量:
static int _test = 0;
[TestMethod]
public void __Test1()
{
_test += 1;
Assert.IsTrue(_test == 1);
}
[TestMethod]
public void __Test2()
{
_test += 1;
Assert.IsTrue(_test == 2);
}
完美地工作,谢谢。 – Andrey
技术上正确,但断言_test == 2是一个非常糟糕的例子。 a)单独运行时失败b)没有保证测试以特定顺序运行c)比较值时应使用Assert.AreEqual。 –
@StefanSteinegger - 肯定有效的点。重点应当放在使用静态变量作为实现OP所要求的方法。 –
你为什么要这么做? –
你可以请你发布你的代码吗?您的变量在哪里申报? – Schaliasos
@StefanSteinegger我正在运行涉及第三方REST API的集成测试 - 创建项目,检索生成的服务器端属性,然后将其用于另一个调用。考虑到他们拥有一个功能齐全的沙箱,对整个事物进行存根似乎是不合理的。我确定有很多其他合法的理由想要这样做。 – Andrey