Как запустить NUnit onetimesetup несколько раз для разных баз данных - PullRequest
1 голос
/ 01 июня 2019

У нас есть набор интеграционных тестов, который содержит множество тестов, выполняющих классы репозитория.

Цель состоит в том, чтобы в BaseTestFixture был метод [OneTimeSetup], который будет создавать / заполнять каждую целевую базу данных (Postgres / SQL Server) только один раз перед всеми тестами и демонтаж после всех тестов.

Получил эту ошибку:

nunit OneTimeSetUp: методы SetUp и TearDown не должны иметь параметров

Как мы можем запустить весь набор тестов с Postgres, SQL-сервером и обоими без дублирования тестов?

Спасибо.

1 Ответ

1 голос
/ 01 июня 2019

Интересный вопрос.Я сам не могу придумать «готовое» решение

Один простой обходной путь - сделать два отдельных запуска консоли и использовать флаг --params.Таким образом, вы можете запустить разные настройки для каждого типа базы данных, в зависимости от значения TestParameters, переданного в.

Более приятной альтернативой может быть реализация пользовательского атрибута, который позволит вам параметризовать SetUpFixtures.(Существует существующая дискуссия о добавлении этой функции здесь - хотя она не вызвала особого интереса с 2016 года.) Однако я думаю, что было бы разумно сделать это как пользовательский атрибут без изменения NUnit.

Посмотрите, как реализован SetUpFixtureAttribute .Я бы подумал, что вы захотите создать свой собственный атрибут IFixtureBuilder, который работает аналогичным образом, за исключением того, что может быть параметризован, и вернуть два набора с различными настройками для каждой базы данных.Я думаю, что это сработает, хотя это не функциональность, я полностью знаком с собой.

...