Проблема: Сборка SQLite, на которую ссылается моя сборка DAL, не копируется в выходную папку при выполнении модульных тестов (для параметра Копировать локальный установлен значение true
).
Я работаю над приложением .Net 3.5 в VS2008 с NHibernate & SQLite в моем DAL. Доступ к данным предоставляется через интерфейс IRepository (фабрика репозитория) другим уровням, поэтому нет необходимости ссылаться на сборки NHibernate
или System.Data.SQLite
на других уровнях.
Для модульного тестирования существует общедоступный метод фабрики (также в моем DAL), который создает сеанс SQLite в памяти и создает новую реализацию IRepository. Это также делается для того, чтобы избежать использования общей конфигурации SQLite в памяти для всех сборок, которые в ней нуждаются, и для того, чтобы не ссылаться на эти внутренние сборки DAL.
Проблема в том, что я запускаю модульные тесты, которые находятся в отдельном проекте - если я не добавлю System.Data.SQLite
в качестве ссылки на проект модульного теста, он не будет скопирован в папку TestResults ... \ Out (хотя этот проект ссылается на мой проект DAL, который ссылается на System.Data.SQLite
, для которого локальное свойство Copy установлено в true
), поэтому тесты не выполняются во время настройки NHibernate. Если я добавлю ссылку на мой тестовый проект, он скопируется, и модульные тесты сработают.
Что я делаю не так?
[Update]
Кажется, я нашел ответ здесь: TFS UnitTesting не развертывает локальную сборку копии для проверки директории на сервере сборки . Если я добавлю ссылку на этот тип в некоторый статический метод в моем DAL, он будет скопирован автоматически, когда я буду ссылаться на сборку DAL в моих тестах. Это кажется хаком, но IMHO - более чистое решение, чем отдельный скрипт, поскольку он создает «реальную» зависимость.
Кажется, что он также копируется, если я добавляю сборку SQLite в качестве дополнительного элемента развертывания в конфигурацию моего тестового запуска (файл LocalTestRun.testrunconfig).
Спасибо за ваши быстрые ответы!