Подтвердить что ты не робот

Unit Test С# [TestInitialize]

Я тестирую контроллеры веб-API Unit Testing С# - для каждого требуется несколько параметров для инициализации. У меня есть этот код в каждом тесте на данный момент, но он очень громоздкий. Как я могу поместить этот код в [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();
}   

Спасибо

4b9b3361

Ответ 1

Вы можете установить переменные, которые вам нужны, в качестве полей тестового класса, а затем инициализировать их в методе 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();
    }   
}

Таким образом, поля могут быть доступны из каждого теста