根據this schema VS2010 Premium和Ultimate有一個檢查代碼覆蓋率的工具 - 以及其他一些測試工具。這是否支持nUnit,或只是MS測試?VS2010代碼覆蓋支持nUnit嗎?
回答
這是可行的,但要求位的設置。我剛剛與xUnit合作。大概下面的內容也適用於NUnit。
對於這個工作,你需要三個項目
- 被測系統 - SUT
- 使用您喜歡的單元測試框架的一個測試項目 - xUnitTest
VS測試項目 - VSTest
- 創建VSTest項目(呼吸容易)
- 刪除默認的文件的UnitTest1.cs
- 添加一個「通用測試」 VSTest
- 指定到控制檯亞軍的Win32版本的完整路徑爲您的測試框架,如xunit.console.x86。EXE
- 指定的xUnitTest DLL
- 根據VS測試菜單 - >的完整路徑編輯測試設置 - >局地>
- 數據&診斷 「標籤」
- 確保只代碼覆蓋已被允許
- 選擇代碼覆蓋率列,然後點擊上面的「配置」按鈕(是的,這是一個精心設計的UI :)
- 在「代碼覆蓋率詳細信息」對話框
- 選擇都的dll文件的SUT和xUnitTest
- 啓用 「在測試儀器組件」
現在,當你運行VS2010的測試,它會正確儀器測試dll,運行代碼運行器並將信息收集到Visual Studio中。
據我所知,它沒有。我們的TestMatrix工具雖然。
感謝您的評論。 +1。如果你實際上是在出售競爭產品,不知道我是否可以信任這個產品:-P所以我會離開這個掛一段時間.. – stiank81 2010-05-04 07:09:17
這是公平的。你不必相信我 - 下載VS2010的試用版,並親自體驗一下:)而且我們不與VS競爭 - 我們提供補充產品來增強它...順便說一句,我只是嘗試內置運行dasBlog (使用NUnit)在VS2010 Premium中測試 - 它沒有看到測試。 VS2010試用版下載地址在這裏 - http://msdn.microsoft.com/en-us/vstudio/bb984878.aspx – sergeb 2010-05-04 08:28:55
理論上,應該。甚至有documentation for it on MSDN。基本上,你需要建立一個包含NUnit測試的「通用測試項目」。在實踐中,我一直試圖讓它現在工作近三個小時,但它仍然沒有。該組件被檢測,但沒有覆蓋結果。
我總是收到以下消息:「生成空結果:沒有使用檢測二進制文件,查看任何檢測問題的測試運行詳細信息」,但該文件中沒有報告任何問題。
此外,彈出事件日誌中的VSPerf錯誤。我submitted this as a bug to Microsoft。但是,這可能與我的機器有關。由於我剛剛提交了該錯誤,因此我不知道其他人是否可以重現該問題。
聽起來令人沮喪..我還沒有嘗試過自己,但它聽起來應該是可能的。如果你想出來,請大聲喊出來! – stiank81 2010-05-06 11:09:16
我試圖設置它,並讓nunit運行插裝程序集,但代碼覆蓋數據丟失。 Upvoted你的MS站點上的錯誤。 – LeffeBrune 2011-07-15 18:32:27
確保您使用x86 runner進行測試(nunit-console-x86.exe)。 – LeffeBrune 2011-07-15 18:56:31
經過一個多小時的擺弄之後,我無法讓它正常工作。使用nunit-console.exe,我能夠使用NUnit 2.5.5的檢測工具正常運行通用測試。儘管NUnit控制檯運行器通過通用VSTest成功運行了我的測試,但我始終無法生成代碼覆蓋率結果。
儘管VS2010的測試功能在閱讀時聽起來很棒,但實現過程似乎過於複雜和繁重。多年來,我一直在使用NUnit,並取得了巨大的成功,並且摩擦非常低。
我決定嘗試JetBrains dotCover測試版,並在5分鐘內下載它,安裝它,並且能夠非常成功地配置和使用它。它無縫集成到ReSharper 5中,並且只是爲我的NUnit測試工作。代碼突出顯示是一個很棒的可視化工具,用於快速定位未被測試執行的代碼塊。
您需要在NUnit中關閉shadowcopy才能使其工作。爲此,請使用/ noshadow標誌。
例如C:\ Program Files(x86)\ NUnit 2.6 \ bin \ nunit-console-x86.exe MyLibrary.dll/noshadow
我試過我在Google上找到的每個方法,然後決定給TestDriven.NET一個嘗試。它出色地工作:解決方案的右鍵點,測試覆蓋範圍並完成。嚴重的是,它不會更容易。
我有同樣的問題,我找到了解決方法。 「代碼覆蓋細節」對話框中顯示的項目dll是錯誤的組件,需要進行檢測,結果是空的。所以你需要從另一個文件夾中獲取該DLL,它位於單元測試項目文件夾中!既然你已經添加爲你的單元測試項目的參考,它將會在那裏。因此,例如,我創建了一個簡單的項目計算器,然後創建了一個名爲TestCalculator的單元測試項目,並在單元測試項目中添加了Calculator.dll作爲參考。因此,在「代碼覆蓋細節」對話框中,單擊「添加程序集」,然後從「.. \ TestCalculator \ bin \ Debug」文件夾中選擇Calculator.dll。這樣就可以工作。
Visual Studio 2012增加了對第三方單元測試框架的支持。
可用的測試框架插件包括:
- NUnit的
- xUnit.net
- MbUnit的
- QUnit
- 茉莉花
增加支持是非常容易的,因爲你可以從Visual Studio擴展管理器添加它。
例如,您可以添加「NUnit測試適配器」。
而現在「分析代碼覆蓋率」與第三方單元框架一起使用。你可以檢查所有的測試或者只有一個。
如果您使用VS 2010不害怕升級到VS2012,因爲sln文件是兼容的(您需要VS2010 SP1)。
這是做到這一點的方法。如果這能夠正常工作,我不會浪費你的時間去做點滴(更復雜的解決方案)。 – 2013-04-29 01:15:39
僅適用於VS2012 Ultimate或Premium。專業版中「分析代碼覆蓋率」不可用。 [源](http://msdn.microsoft.com/en-us/library/dd537628.aspx)和[源](http://social.msdn.microsoft.com/Forums/vstudio/en-US/afd3ee87 -76e4-499d-ad8a-dbc6adb96cb9 /視覺工作室專業2012 - 那裏有 - 無鍵式分析代碼覆蓋率) – 2013-08-16 15:37:19
該主題中的許多答案對我有很大的幫助,但從多個答案中獲取所有小細節已經過去了。
我編的6個暗示,由斯科特·溫斯坦標記的答案一起做的伎倆我的列表: Running NUnit tests in Visual Studio 2010 with code coverage
雖然我不上兩個答案應該upvotes,只是饒了我downvotes複印:
- 斯科特·溫斯坦
- 約翰和斯科特·麥凱
- 麗麗
- mnemosyn
Upvote them!
- 1. Nunit和C#的代碼覆蓋率
- 2. Wix3.5支持VS2010嗎?
- 3. VS2010代碼覆蓋率不準確
- 4. OpenCover可以獲得Microsoft.Moles.Runner和Nunit的代碼覆蓋率嗎?
- 5. R - apriori()支持vs覆蓋?
- 6. 支持硬件覆蓋?
- 7. 是否可以向GAEUnit添加代碼覆蓋支持?
- 8. 支持共享庫代碼覆蓋率的gcov版本
- 9. 編寫一個工具來支持代碼覆蓋測試
- 10. 代碼覆蓋率/分支覆蓋建議值
- 11. 代碼覆蓋率 - 哪個代碼覆蓋哪個代碼?
- 12. 確定哪些測試提供了VS2010代碼覆蓋率結果的覆蓋
- 13. MSTest代碼覆蓋
- 14. Java - 代碼覆蓋
- 15. VS2013代碼覆蓋
- 16. Sonareqube覆蓋opencover和Nunit
- 17. SonarQube 6.4覆蓋NUnit 3
- 18. 代碼覆蓋率:.NET代碼覆蓋率和SonarQube VSTS集成
- 19. OpenLayers類型的覆蓋支持
- 20. 覆蓋BeanPropertyRowMapper以支持JodaTime DateTime
- 21. VS2010 Classic ASP支持
- 22. Spark支持插入覆蓋靜態分區嗎?
- 23. 基礎分支覆蓋是否有很好的代碼覆蓋工具?
- 24. 「代碼覆蓋」與「代碼測試」?
- 25. 使用版本代碼覆蓋代碼
- 26. 給定代碼的代碼覆蓋
- 27. XCode - 代碼覆蓋率?
- 28. BullsEye代碼覆蓋範圍
- 29. 全部代碼覆蓋率
- 30. TDD和代碼覆蓋率
謝謝!不是我希望的平滑答案,但.. .. --P – stiank81 2010-05-31 15:33:15
已經嘗試了幾個小時了。我確實得到了傳遞給nunit-console的檢測程序集,但從來沒有得到代碼覆蓋結果。 – LeffeBrune 2011-07-15 18:27:29
有一個小細節從我身上逃脫 - 你必須爲你的測試使用x86 runner(比如nunit-console-x86.exe)。將測試運行器更改爲x86已解決的問題。 – LeffeBrune 2011-07-15 18:55:10