我有一个简单的问题,我创建一个单元测试类,让我们说它看起来像这样:
namespace Tests
{
[TestClass]
public class ApiTest
{
private var x;
[TestMethod]
public testA()
{
some operactons
x = some value
}
[TestMethod]
public testB()
{
if(x == null)
test fail
}
}
如上所述,我感兴趣的是,是否可以在测试方法A中设置一个值(x),以便它可以在测试方法B中使用?
答案 0 :(得分:3)
你可以通过将var x声明为静态来实现这一点:
private static var x;
但我不建议从TestMethod设置变量。如果" var x"是每个其他TestMethod(testC,testD,...)中需要的变量,然后在ClassInitialize()中设置它。这样,var x可用于类ApiTest中的每个TestMethod。
[TestClass]
public class ApiTest
{
private static var x;
[ClassInitialize()]
public static void InitApiTest(TestContext context)
{
some operactons
x = some value
}
[TestMethod]
public testA()
{
//Obsolete
}
[TestMethod]
public testB()
{
if(x == null)
test fail
else
...
}
}
答案 1 :(得分:1)
与所建议的一样,你可能不应该首先做到这一点。单元测试应相互独立。但您可以在Test initializer或Class initializer中设置测试的先决条件,例如
private int x;
[TestInitialize]
public void Init()
{
x = ...;
}
测试初始化程序将在测试类中的每个测试之前执行。
答案 2 :(得分:0)
在运行每个测试之前,使用TestInitialize属性运行代码。具有此属性的方法将在测试a和测试b之前运行。
[TestInitialize()]
public void MyTestInitialize()
{
x = someValue;
}
如果您只想在所有测试之前执行一次,请在构造函数中执行此操作。