Почему перехват [BeforeTestRun] в SpecFlow 3.1.97 не выполняется? - PullRequest
1 голос
/ 29 апреля 2020

В проекте, над которым я работаю, мы проводим тестирование на основе SpecFlow.

В прошлых проектах мы использовали систему хуков SpecFlow для настройки макетов, ограниченных тестовых данных и других битов. тестирование инфраструктуры. Прямо сейчас я и моя команда работаем над настройкой наших тестов, но мы обнаруживаем, что наша тестовая установка не выполняется, потому что [BeforeTestRun] не выполняется.

Сначала мы обнаружили это не видя, как генерируются наши схемы локальной базы данных, что мы обычно делаем методом [BeforeTestRun]. После установки точки останова в соответствующем методе и отладки нашего теста 'pathfinder' мы обнаружили, что метод [BeforeScenario] срабатывает, а [BeforeTestRun] - нет.

Используемая ниже установка:

[Binding]
public class TestSuite
{
    [BeforeTestRun]
    public static void BeforeTestRun()
    {
        // Setup stuff, do whatever.  Set a breakpoint on the next line.
        int x = 1 + 1;     // The breakpoint on this line will not be hit.
    }

    [AfterTestRun]
    public static void AfterTestRun()
    {
        int x = 1 + 1;     // Oddly enough, this one *DOES* get hit.
    }

    [BeforeScenario]
    public static void BeforeScenario()
    {
        int x = 1 + 1;     // A breakpoint on this line reveals that BeforeScenario gets hit first!
    }

    [AfterScenario]
    public static void AfterScenario()
    {
        int x = 1 + 1;     // Because our testing setup gets errors due to not being set up, I can't
                           // honestly say if this gets hit properly.
    }
}

... Однако, BeforeTestRun не получает удар, несмотря на проверку следующих распространенных проблем:

  • BeforeTestRun украшает метод c stati
  • TestSuite украшен атрибутом [Binding]

Все, что я могу сделать, - это то, что либо я что-то упустил, либо проблема в среде. Поскольку я не знаю, чего еще мне не хватало, вот среда:

Проект представляет собой . NET Core 3.1 MSTest project . В проекте установлены следующие пакеты NuGet:

  • Microsoft. Net .Test.Sdk v16.6.1
  • NUnit v3.12.0
  • NUnitTestAdapter v3.16.1
  • SpecFlow 3.1.97
  • SpecFlow.NUnit 3.1.97

Вопрос: Каким образом, учитывая мой технологический стек, я могу получить тесты SpecFlow для выполнения кода, который находится внутри метода stati c, украшенного [BeforeTestRun]?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...