程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#代碼覆蓋率實踐-vsinstr和OpenCover

C#代碼覆蓋率實踐-vsinstr和OpenCover

編輯:C#入門知識

最近接觸的項目涉及到C#開發的應用,測試過程中我們需要去分析C#的代碼覆蓋率,問了一些人,在網上也搜了一些,零碎的找到很多資料,但是都不是很完整,實際使用的過程中還是走了不少彎路。到現在為止,有兩種可行的方案試驗成功了,這裡寫出來給大家分享下。可能很多人都用過,就當是個整理吧。


方法一:使用VS自帶的vsinstr工具
准備條件:安裝VS2010或者VS2012。


基本的操作步驟,主要是三個。
1. 對被測的DLL進行插樁。
"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Performance Tools\x64\vsinstr"  -coverage "D:\xxx.dll"

原來的dll自動被更名為 *.orig,相當於是一個備份。可以看到被插樁的DLL尺寸有所增加。

\


2. 啟動coverage數據監控和收集。
start vsperfmon -coverage -output:"D:\xyz.coverage" /CS /user:everyone

 \
 


3. 運行被測的程序,或者等待被執行。

4. 停掉被執行的程序,可以直接關閉應用。


5.  停止coverage監聽,生成數據。
vsperfcmd /shutdown

 

 \
 

6. 找到D:\xyz.coverage,雙擊可以直接用VS打開查看。 顯示的是block覆蓋率,如果有source code可以對著代碼查看。

 

  \

 

方法一小結:
1. 這種方式除了最後查看報告,不需要啟動VS,也不限制被測的代碼如何被測試,可以手工也可以其他自動化程序。
2. 目前來看需要逐個DLL插樁,對於exe文件沒有嘗試。
3. 生成的覆蓋率報告是二進制文件,需要在VS裡面查看。
4. 目前看到的是只有block級別的覆蓋率數據,沒有找到line級別的。

 


方法二:使用免費的OpenCover工具


准備條件:
1. 安裝OpenCover工具,可以直接下載msi或者zip包
2. 下載ReportGenerator工具,用於將OpenCover生成的XML報告轉換成更加可讀的HTML報告。


具體的步驟:
1. 在VS裡面隨便用C#寫了一小段代碼,包含了一個分支,用於查看覆蓋和未覆蓋的情況。編譯成 ConsoleApplicaiton1.exe


2. 通過OpenCover將被測的ConsoleApplicaiton1.exe在命令行啟動起來,加上相關的參數。
 -output:c2.xml   指明將生成的報告文件名。
-targetdir:  告訴OpenCover這個exe對應的PDB在哪兒。兩種方法PDB文件都是必須的。
-register 不是很清楚用途,但是是必須的,第一次沒加這個參數覆蓋率數據出不來。
更詳細的參數請查看OpenCover的手冊。


具體的命令:
OpenCover.Console.exe -register -target:"C:\Users\rickyqiu\Documents\Visual Studio 2012\Projects\ConsoleApplication1\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe" -output:c2.xml -targetdir:"C:\Users\rickyqiu\Documents\Visual Studio 2012\Projects\ConsoleApplication1\ConsoleApplication1\bin\Debug"

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved