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