在 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);
        }
    }
}