c# - 在 C# 单元测试框架中将信息从一个 [TestMethod] 传递到另一个 [TestMethod]

标签 c# unit-testing visual-studio-2012 vs-unit-testing-framework

我想在一个测试方法中创建一个对象,并在其他 [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/

相关文章:

c# - 如何使用 Sql CE 4 数据库进行功能测试

c# - 获取此格式的日期时间 : 2018-10-26T16:44:38+01:00

unit-testing - GDI中控制图的单元测试

c++ - 如何将单元测试与 assert() 相结合

Winforms:不是有效的 Win32 应用程序

c# - 如果 int 递增,是否删除 DGV 中的行?

c# - 没有无参数构造函数的子类的 XML 序列化

java - 如何通过 PowerMockito 模拟 String#equals 方法

visual-studio - 商业智能项目是否支持自定义默认模板?

c++ - VS2012 LibRTMP包含c到c++