2016-06-16 3 views
0

Я пытаюсь использовать модульное тестирование в приложении, которое использует MEF для загрузки плагинов.Ошибка с модульным тестированием и MEF

Строка кода:

var dirCatalog = new DirectoryCatalog(
    Path.Combine(
     Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), 
     "Plugins")); 

отлично работает в отладочной или выпуска режиме.

Но если я выполняю тест или отлаживаю тест, он просто закрывает тестирование. Исключено исключение. Ничего.

Я проверил, что путь правильный.

ответ

0

У меня есть настольное приложение, где библиотека бизнес-логики использует MEF и использует ряд модульных тестов. Я построил свой каталог с помощью AppDomain.BaseDirectory:

var location = AppDomain.CurrentDomain.BaseDirectory; 
var dirCatalog = new DirectoryCatalog(Path.Combine(location, "Plugins")); 

Если он должен работать как в настольном приложении и в веб-приложении, попробуйте использовать AppDomain.RelativeSearchPath:

var location = AppDomain.CurrentDomain.RelativeSearchPath ?? 
       AppDomain.CurrentDomain.BaseDirectory; 
var dirCatalog = new DirectoryCatalog(Path.Combine(location, "Plugins")); 
+0

Проблема заключается не в поиске пути. У блока есть правильный путь. Это вызов нового каталога DirectoryCatalog (... который сбой его. Нет исключений. Нет обратной связи –

+0

@ JorgeOtero-Millan Я вижу. Я видел некоторые проблемы в прошлом с MEF, когда разные версии ОС или .NET Используете ли вы единичные тесты на том же компьютере, что и основное приложение? –

+0

Все на одной машине, это просто приложение для форм Windows, которое загружает некоторые плагины из DLL, которые также используют некоторые dll C++ ... Это может быть ключ... –

Смежные вопросы