2012-10-03 120 views
1

我剛剛從Nuget中獲得了NUnit,NUnit Runners和OpenCover。 NUnit部件在GUI和控制檯模式下都運行良好。但在PowerShell中,我似乎無法讓OpenCover正常工作。以下使用的各種例子,我結束了這個命令:OpenCover沒有將參數傳遞給NUnit

.\OpenCover.Console.exe -register:user -target:"..\NUnit.Runners.2.6.1\tools\nunit-console.exe" -targetargs:"/noshadow C:\Path\To\Tests.dll" -filter:+[*]* -output:coverage.xml 

我看到NUnit的開放版權的信息,但隨後NUnit的告訴我:

fatal error: no inputs specified

其次,當然,通過標準的幫助輸出描述標誌和什麼。然後,OpenCover自然也會顯示一個錯誤,指出沒有任何內容與過濾器匹配,並且沒有結果。

於是,我就直接運行NUnit的:

..\NUnit.Runners.2.6.1\tools\nunit-console.exe /noshadow C:\Path\To\Tests.dll 

而且運行良好。測試通過,一切都很開心。想,也許文檔和例子是過時的,我試過targetargs組合直接進入調用:

.\OpenCover.Console.exe -register:user -target:"..\NUnit.Runners.2.6.1\tools\nunit-console.exe /noshadow C:\Path\To\Tests.dll" -filter:+[*]* -output:coverage.xml 

但錯誤輸出仍然是相同的。

我錯過了正確使用OpenCover的東西嗎?我如何才能正確地與NUnit控制檯運行器交互?

+1

你可以嘗試沒有「/ noshadow」參數? –

+0

@HenryAloni:有趣。在非'targetargs'嘗試沒有'/ noshadow'嘗試沒有區別。但是,如果我再次分離'targetargs'並從該嘗試中移除'/ noshadow',則NUnit成功運行測試。但是,OpenCover仍然報告「沒有與提供的過濾器相匹配的程序集進行檢測,這可能是由於缺少匹配過濾器的程序集的PDB」。然而,在輸出bin中有PDB文件,我將它指向測試DLL。 – David

+0

看起來像opencover帶有錯誤的參數。你可以嘗試把它自己的qoutes中的每個參數:OpenCover.Console.exe「-target:.. \ NUnit.Runners.2.6.1 \ tools \ nunit-console.exe」-output:。\ test.xml「 - targetargs:MyApp.Merchant.nunit/noshadow「 –

回答

0

難道是先設置當前工作目錄嗎?

我也有我的引號過濾參數,例如, -filter:"+[*]*"

可能是價值至少排除這些了......

+0

有趣的是,它看起來像工作目錄可能是罪魁禍首。如果我出去找一些隨機目錄,並且對所有東西都使用絕對路徑(在我的例子中,我使用OpenCover可執行文件和NUnit可執行文件的相對路徑),那麼我會得到相同的結果。但是,導航到編譯輸出文件夾的測試程序集,並再次使用絕對路徑的一切似乎工作。所以當我自動化這個時,我應該能夠使用'Set-Location'作爲腳本的第一行。希望。 – David