2013-01-14 81 views
8

我正在使用MSTest(VS2008),我需要在测试之间保持一个变量。但是变量会在每次测试之间重新初始化。如何在MSTest中的测试之间持续变量?

根据this answer提到的第三点,

MSTest的总是实例化被执行的测试类的每个测试方法的一个新实例。

是否有直接的方法来保持测试之间的变量的值,或以某种方式抑制此行为?

+2

你为什么要这么做? –

+0

你可以请你发布你的代码吗?您的变量在哪里申报? – Schaliasos

+0

@StefanSteinegger我正在运行涉及第三方REST API的集成测试 - 创建项目,检索生成的服务器端属性,然后将其用于另一个调用。考虑到他们拥有一个功能齐全的沙箱,对整个事物进行存根似乎是不合理的。我确定有很多其他合法的理由想要这样做。 – Andrey

回答

9

使用静态成员变量:

static int _test = 0; 

[TestMethod] 
public void __Test1() 
{ 
    _test += 1; 
    Assert.IsTrue(_test == 1); 
} 

[TestMethod] 
public void __Test2() 
{ 
    _test += 1; 
    Assert.IsTrue(_test == 2); 
} 
+0

完美地工作,谢谢。 – Andrey

+4

技术上正确,但断言_test == 2是一个非常糟糕的例子。 a)单独运行时失败b)没有保证测试以特定顺序运行c)比较值时应使用Assert.AreEqual。 –

+1

@StefanSteinegger - 肯定有效的点。重点应当放在使用静态变量作为实现OP所要求的方法。 –

相关问题