У меня есть проект, который использует Microsoft Enterprise Library и использует конфигурацию для указания типа менеджера кэширования.
Загруженный таким образом менеджер кэширования зависит от библиотеки Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.dll
, которая включена в в моем тестовом проекте в качестве ссылки, но библиотека не используется для код напрямую (во время компиляции). Таким образом, скомпилированный файл mytests.dll не будет ссылаться на эту библиотеку (это проверено с помощью dotpeek).
Вопрос № 1: Почему MSTest не копирует такую библиотеку во временную папку для тестирования? Вопрос № 2: Есть ли элегантный обходной путь?
Не элегантное решение # 1 : сделайте фиктивную ссылку на включенную библиотеку (как упомянуто в этом нить );
или решение # 2 : используйте конфигурацию MSTest Deploy для явного включения библиотеки.
решение # 3 :
Использование файла .testsettings в mstest решает проблему, даже если опция развертывания отключена . То есть Файл testsettings содержит:
Похоже, что выполнение этого вызывает запуск mstest не в каталоге temp TestResults\user_HOST 2011-12-21 15_22_08\Out
, а в bin\Debug
(где рассматриваемая библиотека правильно ] развернут в).
Это ожидаемое поведение mstest? Я имею в виду тот факт, что mstest не использует временный каталог, если в файле .testsettings отключено развертывание?