2017-05-28 163 views
1

我有一個項目,包含我想測試的類和方法。我有另外一個測試方法的項目,測試我的主要項目的方法。當我運行覆蓋測試時,我得到了測試方法代碼的覆蓋範圍,沒有我想要測試的方法的覆蓋範圍

我運行opencover測試,我生成reportgenerator報告,這個命令,我有一個.bet文件:

..\tools\OpenCover.Console.exe -register:user -target:"C:\myDllWithTests.dll" -output:"c:\coverage\opencovertests.xml" 

.\ReportGenerator.exe "-reports:c:\coverage\opencovertests.xml" "-targetdir:c:\coverage\opencovertests.xml\reports" 

我使用MSTest的測試。

問題是,在html報告中,我看到覆蓋的代碼是測試方法,而不是我測試主項目中的方法。

如何在結果中添加主要方法?

謝謝。

回答

1

target參數爲OpenCover傳遞路徑到MSTest(例如「C:\ Program Files文件(x86)\ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ mstest.exe」)並指定您的測試程序集(例如「C: \ myDllWithTests.dll「)參數爲targetargs

要從代碼覆蓋統計中刪除測試程序集,請在filter argument中指定它們。

下面是OpenCover命令,適用於我。這裏的測試代碼放在SampleApp.dll中,測試代碼放在SampleApp.Tests.dll中。

.\OpenCover.Console.exe -register:user -mergebyhash -target:"c:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\MSTest.exe" -targetargs:"/testcontainer:\"d:\test\SampleApp\SampleApp.Tests\bin\Debug\SampleApp.Tests.dll\"" -output:UTResults.xml -filter:"+[SampleApp*]* -[SampleApp.Tests]*" 

結果報告只包含SampleApp.dll裝配統計,SampleApp.Tests.dll被排除在外:

enter image description here

檢查這個answer一些更多的細節。 還有一個由Allen Conway的great article使用OpenCover & ReportGenerator for .Net項目。

+0

我試着添加targetargs,但結果是一樣的。關於這篇文章,我知道,但他沒有提供源代碼,我懷疑測試是否與主代碼相同,或者與其他dll不同。在我的情況下,問題是我只能得到測試組件的覆蓋範圍,而不是主要組件。 –

+0

我已經嘗試過這個過濾器:-filter:「+ [\ * *] \ * - [\ * * Tests] \ *」-mergebyhash但它不包含與測試相同的文件夾中的main.dll。 DLL。此外,我已經嘗試了主DLL的完整名稱,但仍然無法正常工作。 –

+0

可能問題不在於OpenCover,而在於測試本身。 MSTest的輸出是什麼?您是否看到執行測試的統計信息,例如「1/1測試通過」? – CodeFuller