Проблема с VSTS UnitTesting. Не могу предоставить C ++ DLL - PullRequest
0 голосов
/ 28 декабря 2008

Я использую платформу VSTS Unitesting. Я пытаюсь проверить метод, который получил ссылки на сборки, которые в свою очередь содержат DllImport для C ++ DLL.

Чтобы это работало, мне нужно скопировать библиотеки DLL C ++, чтобы они находились в том же каталоге, где работают EXE и DLL.

Конечно, когда я использую тот же код с Unittest, мне также нужно предоставить эти DLL. Я обнаружил, что в модуле Unittest используется $ (Solution) \ TestResults [WorkSpace] [DateTime] \ Out в качестве рабочего каталога.

Если я вручную скопирую DLL-библиотеки C ++ в этот каталог, модульный тест работает как чудо.

Проблема в том, что при каждом запуске Unitest он создает новый каталог.

Кто-нибудь сталкивался с этим? у вас есть решение?

Спасибо, Ariel

Ответы [ 2 ]

0 голосов
/ 15 февраля 2009

Как упоминает Стив D, ответом на этот вопрос являются элементы развертывания. Вы можете поместить их в класс, или метод тестирования с использованием атрибута, или использовать конфигурацию Test Run, чтобы добавить их, чтобы при запуске любых тестов из этого решения они были развернуты.

Другой вариант - убедиться, что они где-то находятся в пути, чтобы стандартные окна проверяли правила для библиотек DLL, и среда выполнения могла их найти.

Почему это проблема? потому что метаданных из проекта в Native DLL практически нет - мы не знаем, как их получить. Единственный вариант - это погружение всех типов в развернутых управляемых библиотеках в поисках атрибута DllImport. Однако это может привести к сбою, если вы выполняете явные DLLLoads в управляемом коде.

0 голосов
/ 28 декабря 2008

Вы можете попробовать использовать атрибут [DeploymentItem]. Он позволяет вам указать относительный путь из файла решения, который будет скопирован в выходной каталог теста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...