单元测试C#[TestInitialize]

本文关键字:TestInitialize 单元测试 | 更新日期: 2023-09-27 18:27:46

我正在对C#Web API控制器执行单元测试,每个控制器都需要几个参数才能初始化。目前,我在每个测试中都有以下代码,但它非常庞大。如何将此代码放入[TestInitialize]中,以便在每次测试之前运行?

我已经尝试了以下内容,但显然它超出了测试方法的范围。

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

单元测试C#[TestInitialize]

您可以将所需的变量设置为测试类的字段,然后在TestInitialize方法中初始化它们。

class Tests 
{
    // these are needed on every test
    APIContext apicon;
    XRepository xRep;
    Controller controller;
    RelevantFactoryModel update;
    [TestInitialize]
    public void TestInitialize()
    {
        apicon = new APIContext();
        xRep = new xRepository(apicon);
        controller = new relevantController(cRep);
        controller.Request = new HttpRequestMessage();
        controller.Configuration = new HttpConfiguration();
        update = new relevantFactoryModel();
    }   
}

通过这种方式,可以从每个测试访问字段