Подтвердить что ты не робот

Проблема с модулем тестирования в Visual Studio 2012

Всякий раз, когда я пытаюсь запустить какой-либо тест из своего тестового набора в Visual Studio 2012, я получаю

Сбой теста - [имя метода тестирования]

Сообщение: не удалось настроить контекст выполнения для запуска теста

и мой тест даже не запущен (т.е. источник отказа теста указывает на начало тестового метода:

здесь → TEST_METHOD ([имя метода тестирования]) {

}

Что означает это сообщение, что может быть причиной его появления и что я должен сделать для правильного запуска моего теста?

4b9b3361

Ответ 1

После еще нескольких исследований я понял, что я упустил из виду тот факт, что я изменил "Output Directory" проекта, содержащего тестируемые методы (который был .dll), и не был в той же папке, что и моя тестовая библиотека проектов, поэтому давая мне сообщение:

Сообщение: не удалось настроить контекст выполнения для запуска теста

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

Ответ 2

У меня была такая же проблема, и ранее упомянутые предложения не исправили ее для меня. Мой проект использует некоторые сторонние библиотеки, и пути к ним настроены правильно в настройках компилятора и компоновщика моего проекта VS.

Оказывается, что тестовый движок VS не смог найти библиотеки, поэтому я добавил пути к этим библиотекам в переменную среды PATH. Это исправило проблему для меня.

Совет. Попробуйте выполнить модульные тесты из командной строки с помощью VSTest.Console.exe. Сообщения об ошибках помогли мне более легко отладить мою проблему.

Ответ 3

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

Моя тестовая DLL, из своей родной среды, не могла найти свою дочернюю DLL. Вы можете выяснить, чего не хватает, запустив depend.exe. Добавление местоположений в эти другие DLL к моему пути разрешило проблему, и теперь все работает.

Ответ 4

Я получал эту ошибку, и это было потому, что я использовал отладочную DLL и не имел отладки С++ runtimes, где их можно было найти. Я скопировал время отладки С++ в тот же каталог, и проблема была решена.

Ответ 5

У меня была эта ошибка после включения в проект проекта DLL третьей стороны (OpenCV). Добавление dll в путь или его удаление в каталоге system32 работает, но у меня есть лучшее решение.

Тест выполняется из каталога AppX. В моем случае это здесь: ....... OneDrive\Documents\Visual Studio\Projects\TutorialOcr\x64\Debug\OcrTesting\AppX

Я просто уронил dll там, и тест работает!

Ответ 6

Я также получал эту ошибку только в конфигурации Release, потому что я случайно использовал debug lib как одну из зависимостей библиотеки моего тестового проекта. (такая же проблема, как почта bmann)

Чтобы найти, в какой библиотеке возникла проблема, я прокомментировал весь тестовый код и его включение, добавил один пустой тест и один раз удалил свои зависимости, пока не завершился тест.

Ответ 7

.dll, созданный для тестов, запускается из папки, в которой он создан. В моем случае "x64\UnitTests\Tests.dll". Остальная часть моего приложения находится в "x64\Debug\App.exe" и "x64\Release\App.exe". Мое приложение зависит от внешних DLL, которые находятся в корневой папке проекта, а также "Рабочий каталог", указанный для запуска отладки.

Но тестовая панель запуска Test Explorer игнорирует этот параметр и всегда запускает Tests.dll с рабочим каталогом "x64\UnitTests", а затем не находит DLL, от которых я зависим. Добавление SetCurrentDirectory("..\\.."); в, скажем, конструктор тестового класса не устраняет проблему, потому что dll не может быть даже загружена в память, если статические зависимости не найдены.

Я решил это, просто установив "Output Directory" в "$ (SolutionDir)" для конфигурации UnitTests. Это приводит к созданию Tests.dll в корневой папке.