2013-02-20 27 views
16

我們想測量我們自己的自動化迴歸測試系統在相當大的本地應用程序上運行的代碼覆蓋率。這是一個複雜的,腳本化的測試系統,使用我們的應用程序的內置腳本。它有數千次測試,不會被MSTest單元測試所取代。我們可以在沒有MSTest的情況下在VS2012或VS2010中獲得原生C++代碼覆蓋率嗎?

雖然我們現在使用VS2012(Premium)作爲IDE,但仍然使用VS2010編譯器&庫進行編譯。如果這是獲取代碼覆蓋範圍的先決條件,這可能會更快地發生變化。

我們可以爲此做單獨的構建 - 儀表不是問題。

我只是混淆閱讀MS文檔,似乎都從一個假設你開始使用他們的內置測試框架運行單元測試。那時我並沒有努力找到實際上首先談論ALM原生支持的東西!

感謝

+0

afaik這是唯一可能與最終(或任何最昂貴的VS版本命名)版本的視覺工作室。我們也對此進行了調查(以殺死unix/jenkins構建代碼覆蓋率)並堅持使用unix coverage – Najzero 2013-02-20 15:21:55

+0

謝謝。我們已經廣泛部署了Premium,但不是Ultimate。 – 2013-02-20 15:30:24

+1

您可以使用CodeCoverage命令行工具輕鬆完成VS2012。檢查「%ProgramFiles%\ Microsoft Visual Studio 11.0 \ Team Tools \ Dynamic Code Coverage工具」是否具有該功能。它需要.pdbs出現在儀器上,我不確定DIA是否會保持與2010的向後兼容性,因此您可能需要使用2010年構建的應用程序。但值得一試。 – 2013-02-21 00:04:53

回答

26

的Visual Studio 2012的代碼覆蓋工具是測試執行系統完全分開(全面披露:我寫的,但繼承了我離開微軟後的團隊去掉了一些非常有用的功能)。它在VS 2012中從頭開始被重寫,以便在加載到進程中時動態地儀表本機(x86和x86-64)和託管代碼(.NET和Silverlight),而不是修改磁盤上的可執行文件。

您可以在「%ProgramFiles%\ Microsoft Visual Studio 11.0 \ Team Tools \ Dynamic Code Coverage Tools」中找到CodeCoverage.exe。

收集數據:

CodeCoverage.exe collect /output:foo.coverage foo.exe foos_args 

一個配置文件(有一個默認的名爲CodeCoverage.config該目錄)可以被指定爲控制集合。

要分析覆蓋數據,你可以在Visual Studio 2012中打開foo.coverage或使用覆蓋工具本身做了分析:

CodeCoverage.exe analyze /output:results.xml foo.coverage 

注:儀表發生,.pdb文件必須被發現你的模塊。由於您在2010年進行建設,因此可能無法使用2012年的DIA,因此您可能需要使用2012年的工具集進行重建。如果在覆蓋率分析中沒有看到您期望的模塊,請將/include_skipped_modules傳遞給分析命令;將會有一個「原因」屬性告訴你爲什麼模塊被跳過(排除,沒有調試信息等)。

編輯:此外,與以前版本的Visual Studio不同,2012的覆蓋文件格式是完全自包含的。分析時不需要存在模塊和.pdbs。

4

我意識到這是一箇舊帖子,但我相信答案仍然是相關的。我在C#中使用過的所有東西,我並不真正喜歡當我轉移到Visual C++時看到的東西。此外,像你一樣,MSTests只爲我部分工作;我習慣也有我自己的測試應用程序。

基本上我想要的是以下幾點:

  • 運行MS測試或就在Visual Studio中的EXE文件
  • 獲取代碼覆蓋率。

在做了一些研究之後,我注意到VS Enterprise今天用測試適配器支持這個功能。

如果你不在VSE上,我注意到還有一些其他工具,每個工具都爲用戶提供了一個獨立的UI。我個人不喜歡那樣;我希望在Visual Studio中正確使用,最好是在Visual Studio社區版中。

所以我決定自己創建這個插件,雖然它不像VSE那麼複雜,但它對我來說是個訣竅。

  • 我在https://github.com/atlaste/CPPCoverage上寫了一個VSIX代碼覆蓋工具。基本上它管理Visual Studio中的突出顯示,生成可點擊的報告,並集成到解決方案資源管理器中。
  • 對於覆蓋測量本身,我曾使用https://opencppcoverage.codeplex.com/。基本上,它允許您對任何可調試(本機)可執行文件執行代碼覆蓋率測試。現在,我正在使用我自己的代碼覆蓋率測量工具(這些工具也是開源的)。
+0

這是一個很棒的插件。我正在使用cmocka c項目,效果很好。 – pogorman 2016-07-21 16:24:21

相關問題