2013-10-01 38 views
0

當我嘗試通過OpenCover運行VS10測試套件時,使用mstest作爲我的目標應用程序時出現問題。在OpenCover下運行mstest時,我得到一個有關.vsmdi.trx文件的錯誤

"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 

失敗,並出現以下錯誤,對於 直接與MSTest的運行測試與此命令工作該.vsmdi.trx文件(我推測應該MSTEST 後創建測試運行):

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

小號o基本上,它在運行測試之前抱怨它找不到結果文件,但該文件應該在運行結束時創建。

可能這是一個與OpenCover相關的問題,因爲當直接使用mstest運行時,相同的參數工作?

我檢查了我的路徑,他們都工作了,即使錯誤中的一個是mstest生成文件的路徑。

謝謝。

回答

1

看起來你可能需要通過targetargs

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

傳遞數據時逃避你的報價成爲

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

wiki on handling spaces詳細說明。

或者把你的命令在cmd/bat文件中執行你的測試,然後使用opencover來執行。

+0

嗨Shaun,並感謝您的快速響應。轉義引號不起作用,因爲這是通過python腳本完成的,並且它們已經被正確放置(單打'''雙打)。更重要的是,我的問題是,如果有任何實例知道目標參數在通過OpenCover運行時可能以不同的方式使用(特別是對於目標mstest),那麼直接運行目標會比使用目標參數更爲有用。 – nestedloop

+0

您的轉義可能在python中工作以打印報價,但它們是否在命令行上轉義,即您在命令行上實際執行了哪些操作?也許你需要\'「''這樣\」被打印出來 是你放在命令行上的一部分還是一些混淆,所以我們不知道實際的路徑名?如果前者那麼你可能需要 –

+0

我在我的問題中發佈的命令是到達命令行的命令,除了,它在此處作爲變量路徑的佔位符(其中不包含空格) ),因爲這發生在構建機器上 – nestedloop

相關問題