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

Однократная инициализация для Nunit

Где я должен размещать код, который должен запускаться только один раз (а не один раз в классе)? Примером этого может служить оператор, который инициализирует строку соединения с БД. И мне только нужно запустить это один раз, и я не хочу размещать новый метод в каждом классе TestFixture, чтобы это сделать.

4b9b3361

Ответ 1

Атрибут [SetUpFixture] позволяет запускать код установки и/или разрыва один раз для всех тестов в одном и том же пространстве имен.

Здесь находятся документы на SetUpFixture. Согласно документам:

Набор SetUpFixture вне любого пространства имен предоставляет SetUp и TearDown для всей сборки.

Итак, если вам нужны SetUp и TearDown для всех тестов, просто убедитесь, что класс SetUpFixture не находится в пространстве имен.

В качестве альтернативы вы всегда можете определить статический класс строго для целей определения "глобальных" тестовых переменных.

Ответ 2

Создайте класс (я вызываю my Config) и украшу его атрибутом [SetUpFixture]. Методы [SetUp] и [TearDown] в классе будут выполняться один раз.

[SetUpFixture]
public class Config
{
    [SetUp]  // [OneTimeSetUp] for NUnit 3.0 and up; see http://bartwullems.blogspot.com/2015/12/upgrading-to-nunit-30-onetimesetup.html
    public void SetUp()
    {
    }

    [TearDown]
    public void TearDown()
    {
    }
}

Ответ 3

NUnit 3:

[SetUpFixture]
public class TestLogging
{
    [OneTimeSetUpAttribute]
    public void Setup()
    {
        DoStuff();
    }
}