Мои проекты используют StructureMap как контейнер/IoC. Я использую это в таких вещах, как шаблоны репозитория. В моем модульном тестовом проекте я реализовал тестовые репозитории, когда это имеет смысл. Чтобы каркас структуры знал, какую конкретную реализацию использовать, мне нужно инициализировать контейнер и запустить регистрацию типов. Я ищу место для вызова моего IoC.Initialize() в проекте единичного тестирования. Вне модульного теста, например, в веб-проекте, я могу инициализировать мой контейнер/регистрацию IoC из Global.asax. Я ищу эквивалент Unit Test, эквивалентный Global.asax (например, static void main, способ подключиться к начальной точке входа в стартовый блок тестов Unit). Я обошел это, используя базовый класс для всех своих тестов и инициализируя там, поэтому любой протестированный тест заканчивается инициализацией контейнера IoC, если он еще не инициализирован ... но он очень хак-иш IMHO, поэтому Я ищу более чистый способ.Событие запуска проекта Visual Studio?
Любые предложения?
UPDATE/ОТВЕТ
Ниже решение я реализовывал в ответ Мэтью.
<TestClass()>
Public Module Main
Public Property TestContext As TestContext
<AssemblyInitialize()>
Public Sub Initialize(_TestContext As TestContext)
TestContext = _TestContext
IoC.Initialize()
End Sub
End Module
Perfect. Чтобы добавить ясность для тех, кто наткнулся на этот вопрос, я добавил обновление к вопросу выше с моей конкретной реализацией ответа (например, метод с этим декоратором нуждается в конкретной сигнатуре, а класс/модуль, в котором он находится, должен быть украшен TestClassAttribute). Спасибо, Мэтью! – wakurth