0 Вопрос: Удалить тестовую базу данных после выполнения тестов API

вопрос создан в Thu, May 2, 2019 12:00 AM

Для приложения, над которым я работаю, у меня есть набор тестов API, запускающих веб-приложение с использованием TestServer . здесь настройки.

Я хотел бы удалить БД, созданную тестом после его запуска.

Чтобы иметь разные имена БД, позволяющие параллельно выполнять тесты с использованием разных БД, {id} строки соединения (Data Source=Sppd.TeamTuner-TEST-API-{id}.db) заменяется случайной строкой длиной 8.

Обратите внимание, что у меня нет доступа к WebHost, но только к API из тестов API.

Чтобы разрешить вышесказанное, я реализовал:

  • Зарегистрируйте IApplicationLifetime.ApplicationStopping.Register
  • Распространить событие на соответствующие компоненты

Проблема в том, что метод, зарегистрированный с IApplicationLifetime.ApplicationStopping.Register, никогда не вызывается.

После долгих чтений я немного запутался в том, что должно работать, а что нет, в основном из-за этот двухлетний комментарий о том, что IIS express не запускает события завершения работы (это все еще верно?)

Полный пример изменений и воспроизводимости доступен в этом PR . Чтобы воспроизвести проблему, можно запустить любой тест API.

Вопрос . Как удалить БД после выполнения теста?

Функциональный обходной путь - отключить параллельное выполнение тестов для API-тестов с использованием [assembly: CollectionBehavior(DisableTestParallelization = true)] и использовать постоянное имя БД в строке подключения (без динамической замены {id}), но я бы предпочел параллельное выполнение.

    
0
0 ответов                              0                         
источник размещен Вот