Проблема с отражением в модульных / интеграционных тестах - PullRequest
3 голосов
/ 13 июля 2009

Я динамически создаю экземпляр класса с отражением, и это прекрасно работает, кроме случаев, когда я пытаюсь сделать это с помощью модульного тестирования - я использую среду тестирования MS.
Я получаю знакомую ошибку: «Не удалось загрузить файл или сборку« Ассы »или одну из ее зависимостей. Система не может найти указанный файл»
Я скопировал dll в bin \ debug bin проекта модульного теста - это не то место, где его можно поставить?

string assyName = "Go.Data.SqlServer";
string typeName = "GoMolaMola.Data.SqlServer.DataProviderFactory";

Assembly assy = Assembly.Load( assyName );
object o = assy.CreateInstance( typeName );

Есть идеи? Я новичок в модульном тестировании, и любая помощь будет оценена.

Спасибо

Ответы [ 3 ]

4 голосов
/ 13 июля 2009

Папка bin/Debug не там, где выполняются модульные тесты. Visual Studio скопирует вывод вашей компиляции модульных тестов в папку TestResults (обычно сохраняя последние пять тестовых прогонов, каждый с временной меткой, встроенной в имя папки) и запускает там модульные тесты.

Если вы хотите, чтобы .DLL в этой папке, либо создайте ссылку на .DLL из вашего тестового проекта, либо используйте атрибут DeploymentItem , чтобы убедиться, что элемент скопирован в тестовый каталог.

1 голос
/ 22 ноября 2010

Я тоже сталкивался с этой проблемой, и ни один из приведенных выше ответов не работал для меня :( 1. Добавление ссылки на проект не работает для меня 2. Добавление атрибута DeploymentItem также не работает 3. Добавление команды Post-Build также невозможно в этом случае, так как модуль модульного тестирования каждый раз создает новый выходной каталог с отметкой времени .... и ищет эту сборку в этом новом каталоге.

но мне удалось решить эту проблему, включив развертывание и добавив указанный файл в Local Test Setting -> Deployment

0 голосов
/ 13 июля 2009

В таких случаях, когда требуется динамическая загрузка DLL из модульного тестирования, у меня возникает событие после сборки, которое копирует DLL в этот каталог. Я хотел бы знать, есть ли другой способ сделать это. Это был единственный способ, который работал для меня: (

Чтобы отредактировать Post-Build , щелкните правой кнопкой мыши проект, перейдите к Build events и поместите копию, как это, в командную строку события Post-Build. :

copy $(TargetPath) "$(SolutionDir)yourDir\$(TargetFileName)"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...