В xUnit есть классный инструментарий для создания разделяемого контекста между тестами с разным временем жизни - https://xunit.net/docs/shared-context
Если кто-то читал исходники интеграционных тестов
hydrascript, то мог заметить, что там я использую IClassFixture<>Силами фреймворка экземпляр класса контекста пропихивается в конструктор класса тестов, реализующих указанный интерфейс
Однако, что меня всегда смущало абстрацию для вывода он прогнать в конструктор контекста не может
Приходилось писать руками бойлерплейт:
1. Запросить
ITestOutputHelper в конструкторе тестового класса2. Передать в
fixture.GetRunnerОднако, я познакомился с библиотекой Xunit.DependencyInjection, которая решает эту проблему добавляя DI для этих самых контекстов
Получилось очень хитрое решение, убравшее бойлерплейт - TestHostFixture
Ну а PR отрисуется чуть ниже 👇