Майк, единственные загрузочные хуки - это [ClassInitialize] и [TestInitialize] и их аналоги разрыва. В подобных случаях я просто выводил общую логику в свой собственный класс, по сути следуя обычным методам DRY и SoC. Обычно у меня есть несколько сервисов и провайдеров, определенных в моих тестовых сборках, а у методов xInitialize просто есть 1 или 2 строки кода для вызова подходящего провайдера. При этом ответ mpistrich также вполне приемлем, я предпочитаю многоуровневую обработку наследования.