在 C# 单元测试框架中将信息从一个 [TestMethod] 传递到另一个
Passing information from one [TestMethod] to other in C# unit test framework
我想在一个测试方法中创建一个对象,然后在其他 [TestMethod] 中使用创建的对象,而不是重新编写代码来创建。我试图在 class 中声明一个全局变量并在创建测试方法期间分配它。但是当控件转到下一个 [TestMthod] 时,全局变量的值变为空。
namespace ABC
{
class UnitTest
{
[TestMethod]
public void CreateObject()
{
var createdObject = \ logic to create object;
}
[TestMethod]
public void Display()
{
//Here i want to use the created object instead of using object.
}
}
}
我该如何实现?
单元测试应该是完全原子的——有人可能想要 运行 自己的 Display
单元测试,或者他们可能会 运行 并行,或者不同的按您的要求订购。您真正想要做的是用 [TestInitialize]
方法标记您的 CreateObject 方法。请注意,CreateObject
不是单元测试方法 - 它应该是测试设置方法。
作为参考,测试设置属性的完整列表在 here 中进行了描述 - 您也可以使用 ClassInitialize
,具体取决于您希望如何创建对象的具体细节。
namespace ABC
{
class UnitTest
{
private object mySpecialObject;
[TestInitialize]
public void CreateObject()
{
mySpecialObject = CreateSpecialObject();
}
[TestMethod]
public void Display()
{
//Here i want to use the created object instead of using object.
DoStuff(mySpecialObject);
}
}
}
我想在一个测试方法中创建一个对象,然后在其他 [TestMethod] 中使用创建的对象,而不是重新编写代码来创建。我试图在 class 中声明一个全局变量并在创建测试方法期间分配它。但是当控件转到下一个 [TestMthod] 时,全局变量的值变为空。
namespace ABC
{
class UnitTest
{
[TestMethod]
public void CreateObject()
{
var createdObject = \ logic to create object;
}
[TestMethod]
public void Display()
{
//Here i want to use the created object instead of using object.
}
}
}
我该如何实现?
单元测试应该是完全原子的——有人可能想要 运行 自己的 Display
单元测试,或者他们可能会 运行 并行,或者不同的按您的要求订购。您真正想要做的是用 [TestInitialize]
方法标记您的 CreateObject 方法。请注意,CreateObject
不是单元测试方法 - 它应该是测试设置方法。
作为参考,测试设置属性的完整列表在 here 中进行了描述 - 您也可以使用 ClassInitialize
,具体取决于您希望如何创建对象的具体细节。
namespace ABC
{
class UnitTest
{
private object mySpecialObject;
[TestInitialize]
public void CreateObject()
{
mySpecialObject = CreateSpecialObject();
}
[TestMethod]
public void Display()
{
//Here i want to use the created object instead of using object.
DoStuff(mySpecialObject);
}
}
}