Возможно ли провести тесты [OneTimeSetup] для ВСЕХ?

Я использую NUnit для запуска некоторых тестов Selenium, и у меня есть небольшая проблема, я хочу посмотреть, могу ли я исправить ее. Случается, что [OneTimeSetUp] и [OneTimeTearDown] запускаются после завершения каждого финиша. Я хочу запустить [OneTimeSetUp] один раз, когда запускаются тесты, и срыв, который будет выполняться после завершения ВСЕХ светильников.

TestBaseClass.cs

public class TestBaseClass
{

    [OneTimeSetUp]
    public void Init()
    {
         // Login
    }

    [OneTimeTearDown]
    public void TearDown()
    {
        Driver.Close();
    }
}

NavigationTests

[TestFixture]
public class NavigationTests : TestBaseClass
{
    // Tests
}

MainPageTests

[TestFixture]
public class MainPageTests : TestBaseClass
{
    // Tests
}

Ответ 1

OneTimeSetUpAttribute может использоваться двумя способами.

В первом он помечает метод в тестовом приспособлении, который запускается один раз перед любыми другими тестами в этом исправлении. Вот как вы его используете, наследуя от базового класса. OneTimeSetUp, благодаря наследованию, появляется в каждом ваших производных осветителях, но он все еще выполняется несколько раз, по одному для каждого осветителя.

Второе использование в SetUpFixture. Если вы создаете SetUpFixture в определенном пространстве имен, его метод OneTimeSetUp будет запускаться один раз перед любыми другими тестами в этом пространстве имен. Если вы создадите SetUpFixture вне какого-либо пространства имен, его OneTimeSetUp будет запускаться один раз перед любыми тестами в сборке.

ОБНОВЛЕНИЕ: кто-то предложил, чтобы в последнем предложении говорилось "за пределами любого пространства имен, содержащего TestFixture". Это было бы на самом деле неправильно. SetUpFixture должен находиться вне любого пространства имен, чтобы функционировать на уровне сборки. Если существует пространство имен верхнего уровня, которое содержит весь тестовый код, то вы также можете разместить там SetUpFixture, примерно с тем же эффектом. Но если он находится в пространстве имен, в котором нет тестов, он никогда не будет запущен.

Для получения дополнительной информации о SetUpFixture см. документы.