TGViewer
StepOne | Степан Минин StepOne | Степан Минин @steponeit · 3.27K subscribers
Post #469 3.71K
Как я познакомился с xUnit DI

В xUnit есть классный инструментарий для создания разделяемого контекста между тестами с разным временем жизни - https://xunit.net/docs/shared-context

Если кто-то читал исходники интеграционных тестов hydrascript, то мог заметить, что там я использую IClassFixture<>

Силами фреймворка экземпляр класса контекста пропихивается в конструктор класса тестов, реализующих указанный интерфейс

Однако, что меня всегда смущало абстрацию для вывода он прогнать в конструктор контекста не может

Приходилось писать руками бойлерплейт:
1. Запросить ITestOutputHelper в конструкторе тестового класса
2. Передать в fixture.GetRunner

Однако, я познакомился с библиотекой Xunit.DependencyInjection, которая решает эту проблему добавляя DI для этих самых контекстов

Получилось очень хитрое решение, убравшее бойлерплейт - TestHostFixture
Ну а PR отрисуется чуть ниже 👇
GitHub Внедрение ITestOutputHelper через xUnit DI +semver:skip by Stepami · Pull Request #116 · Stepami/hydrascript Description https://stackoverflow.com/a/73141087 При создании новых интеграционников я бы упёрся в проблему копипасты бойлерплейта: Запросить ITestOutputHelper в конструкторе тестового класса Пере...
  • 👍 5
  • 🔥 3
  • ❤ 1
More from @steponeit
  1. Sep 25, 2026Рассказал как я добавил в HydraScript объекты и методы без классов и сделал протоколы. Стр…
  2. Sep 22, 2026Post #858
  3. Sep 21, 2026Post #857
  4. Sep 15, 2026Напомню, что у меня есть WireMock.Grpc.Protobuf — расширение для тех, кто пишет компонентн…
  5. Sep 12, 2026StepOne — официальный контрибутор FusionCache 🤙 Между набросами можно ещё и код писать Fu…
  6. Sep 11, 2026Стояк работодателей 2026 🤫 Оказывается, год назад я предсказал выход Астры! И вместе с эт…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →