我想在一个测试方法中创建一个对象,并在其他 [TestMethod] 的其余部分中使用创建的对象,而不是重写代码来创建。我试图在类中声明一个全局变量并在创建测试方法期间分配它。但是当控制转到下一个[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);
}
}
}
关于c# - 在 C# 单元测试框架中将信息从一个 [TestMethod] 传递到另一个 [TestMethod],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44107968/