Блок SQLite, не скопированный для вывода папки для поблочного тестирования

Проблема: блок 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, которому установили его локальное свойство Копии на true), таким образом, тесты перестали работать, в то время как NHibernate настраивается. Если я добавляю ссылку на свой проект тестирования, то это действительно становится скопированным и работа модульных тестов.

Что я делаю неправильно?

[Обновление]

Кажется, что я нашел ответ здесь: TFS UnitTesting, не развертывающий локальный блок копии для тестирования dir, когда на сервере сборки. Если я добавлю ссылку на тот тип в некотором статическом методе в моем DAL, то это будет скопировано автоматически, когда я сошлюсь на блок DAL в своих тестах. Это действительно походит на взлом, но по моему скромному мнению является более чистым решением, чем наличие отдельного сценария, так как это создает "реальную" зависимость.

Кажется, что это также копируется, если я добавляю блок SQLite как дополнительный объект развертывания к моей конфигурации тестового прогона (файл LocalTestRun.testrunconfig).

Спасибо за Ваши быстрые ответы!

8
задан Community 23 May 2017 в 10:32
поделиться

2 ответа

Ваш проект DAL ссылается на сборку System.Data.SQLite, но это не означает, что она будет скопирована в выходную папку тестового проекта, особенно если она загружена с помощью рефлексии NHibernate. Скорее всего, если вы посмотрите на скомпилированную сборку DAL с помощью reflector, она даже не будет присутствовать в списке ссылающихся сборок, поскольку она не используется непосредственно в коде. Вы уже нашли решение, сославшись на него в проекте модульного тестирования.

7
ответ дан 5 December 2019 в 20:14
поделиться

Вы можете использовать шаг Post-build для копирования dll в выходную папку вручную.

1
ответ дан 5 December 2019 в 20:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: