В проекте, над которым я работаю, мы проводим тестирование на основе 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]
?