Проблема: Сборка SQLite, на которую ссылается моя сборка DAL, не копируется в выходную папку при выполнении модульных тестов (Копировать локально установлено в true
).Сборник SQLite не скопирован в папку вывода для модульного тестирования
Я работаю над .NET-приложением в 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 not deploying local copy assembly to test dir when on build server. Если я добавлю ссылку на этот тип некоторым статическим методом в своем DAL, он будет автоматически скопирован, когда я ссылаюсь на сборку DAL в своих тестах. Это похоже на хак, но IMHO - это более чистое решение, чем отдельный сценарий, поскольку он создает «настоящую» зависимость.
Кажется, что он также копируется, если я добавлю сборку SQLite в качестве дополнительного элемента развертывания в свою конфигурацию тестового запуска (файл LocalTestRun.testrunconfig).
Спасибо за ваши быстрые ответы!
Или вы можете добавить его на свой сценарий сборки Nant или эквивалент, чтобы скопировать необходимые сборки в качестве этапа предварительного теста. – Gishu
Спасибо, но я бы вообще не хотел ссылаться на конкретную сборку данных в своих тестах бизнес-уровня, это просто не так. – Groo
Я бы не стал слишком беспокоиться о том, какие сборки тестирует блок. –