首页 > 解决方案 > 单元测试 C# [TestInitialize] 并行执行的问题?

问题描述

我正在用 C# 执行单元测试——理论上我学会了使用它[TestInitialize]来避免冗余代码。回到办公室,我做了这样的事情。

class Tests {
APIContext apicon;
Controller controller;

[TestInitialize]
public void TestInitialize()
{
    apicon = new APIContext();
    controller = new relevantController(cRep);
    controller.Request = new HttpRequestMessage();
    controller.Configuration = new HttpConfiguration();
}   

我从一位同事那里得到了一条评论,即测试在 Build Server 上并行运行。该方法TestInitialize()将在执行每个测试之前执行。因此,可以在测试运行时重新初始化这些字段。

这是对还是错?我还读到,当您并行运行测试时,运行器将为每个线程创建一个 TestClass 实例,因此在测试运行时不会触及这些字段?

标签: c#unit-testing

解决方案


是的,在执行任何 TestMethod 之前,将调用具有 [TestInitialize] 属性的正确方法。你可以参考这篇文章更好地理解 [TestInitialize] 和 [TestSetup] 属性


推荐阅读