2013-10-01 11 views
0

У меня возникла проблема при попытке запустить тестовый набор VS10 через OpenCover, используя mstest в качестве моего целевого приложения. Запуск тестов непосредственно MSTest работает с этой командой:При запуске mstest под OpenCover я получаю сообщение об ошибке .vsmdi.trx file

"C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe" /resultsfile:"<application_root_path>\UnitTestResults\MyProject.vsmdi.trx" /testmetadata:"MyProject.vsmdi" /testlist:"ServiceTests" /testlist:"DatabaseTests" 

Однако при попытке выполнить ту же команду под OpenCover, как это:

OpenCover\Opencover.console.exe -register:user -target:"C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe" -targetargs:"/resultsfile:"<application_root_path>\UnitTestResults\MyProject.vsmdi.trx" /testmetadata:"MyProject.vsmdi" /testlist:"ServiceTests" /testlist:"DatabaseTests"" -output:<application_root_path>\UnitTestResults\Coverage 

это не удается, со следующей ошибкой, касающейся файл .vsmdi.trx (который я собираю должен быть создан MSTest после испытания запуска):

Error occurred while loading document '<application_root_path>\UnitTestResults\MyProject.vsmdi.trx'. 
Code: 0x800c0006 
The system cannot locate the object specified. 

S o, в основном, он жалуется, что не может найти файл результатов перед запуском тестов, но этот файл должен быть создан в конце прогона.

Возможно, это проблема, связанная с OpenCover, поскольку одни и те же параметры работают при работе непосредственно с mstest?

Я проверил свои пути, и все они работают, даже тот, в котором находится ошибка, - это путь, в котором файл должен быть создан mstest.

Спасибо.

ответ

1

Похоже, что вам может понадобиться, чтобы избежать ваши котировки при прохождении данных через targetargs

-targetargs:"/resultsfile:"<application..."" 

становится

-targetargs:"/resultsfile:\"<application...\"" 

, как описано в wiki on handling spaces.

В качестве альтернативы вы можете выполнить свою команду для выполнения своих тестов в файле cmd/bat, а затем использовать opencover для ее выполнения.

+0

Привет, Шон, спасибо за быстрый ответ. Экранирование кавычек не сработало, так как это делается из скрипта python, и они уже были правильно размещены (удваивается в синглах «» »). Более того, мой вопрос будет состоять в том, что если есть какой-либо экземпляр, который вы знаете о том, где целевые args могут использоваться по-разному (особенно для целевого mstest) при запуске OpenCover, чем при непосредственном запуске цели. – nestedloop

+0

Ваше экранирование может работать на питоне для печати цитаты, но они экранированы в командной строке, то есть что вы на самом деле выполняете в командной строке? Возможно, вам нужно напечатать так, чтобы напечатано. Является ли частью того, что вы положили в командной строке или некоторой обфускацией, чтобы мы не знали имена реальных путей? Если первое, вам может понадобиться переведите это, потому что opencover и OS это поймут. –

+0

Команды, которые я отправил в моем вопросе, - это то, что попадает в командную строку, за исключением , которая стоит здесь как местозаполнитель для пути переменной (в нем нет пробелов), так как это происходит на машине сборки. – nestedloop