2010-04-19 88 views

回答

19

這是可行的,但要求的設置。我剛剛與xUnit合作。大概下面的內容也適用於NUnit。

對於這個工作,你需要三個項目

  • 被測系統 - SUT
  • 使用您喜歡的單元測試框架的一個測試項目 - xUnitTest
  • VS測試項目 - VSTest

    1. 創建VSTest項目(呼吸容易)
    2. 刪除默認的文件的UnitTest1.cs
    3. 添加一個「通用測試」 VSTest
    4. 指定到控制檯亞軍的Win32版本的完整路徑爲您的測試框架,如xunit.console.x86。EXE
    5. 指定的xUnitTest DLL
    6. 根據VS測試菜單 - >的完整路徑編輯測試設置 - >局地>
    7. 數據&診斷 「標籤」
    8. 確保代碼覆蓋已被允許
    9. 選擇代碼覆蓋率列,然後點擊上面的「配置」按鈕(是的,這是一個精心設計的UI :)
    10. 在「代碼覆蓋率詳細信息」對話框
    11. 選擇的dll文件的SUTxUnitTest
    12. 啓用 「在測試儀器組件」

現在,當你運行VS2010的測試,它會正確儀器測試dll,運行代碼運行器並將信息收集到Visual Studio中。

+1

謝謝!不是我希望的平滑答案,但.. .. --P – stiank81 2010-05-31 15:33:15

+0

已經嘗試了幾個小時了。我確實得到了傳遞給nunit-console的檢測程序集,但從來沒有得到代碼覆蓋結果。 – LeffeBrune 2011-07-15 18:27:29

+1

有一個小細節從我身上逃脫 - 你必須爲你的測試使用x86 runner(比如nunit-console-x86.exe)。將測試運行器更改爲x86已解決的問題。 – LeffeBrune 2011-07-15 18:55:10

1

據我所知,它沒有。我們的TestMatrix工具雖然。

+0

感謝您的評論。 +1。如果你實際上是在出售競爭產品,不知道我是否可以信任這個產品:-P所以我會離開這個掛一段時間.. – stiank81 2010-05-04 07:09:17

+0

這是公平的。你不必相信我 - 下載VS2010的試用版,並親自體驗一下:)而且我們不與VS競爭 - 我們提供補充產品來增強它...順便說一句,我只是嘗試內置運行dasBlog (使用NUnit)在VS2010 Premium中測試 - 它沒有看到測試。 VS2010試用版下載地址在這裏 - http://msdn.microsoft.com/en-us/vstudio/bb984878.aspx – sergeb 2010-05-04 08:28:55

1

理論上,應該。甚至有documentation for it on MSDN。基本上,你需要建立一個包含NUnit測試的「通用測試項目」。在實踐中,我一直試圖讓它現在工作近三個小時,但它仍然沒有。該組件被檢測,但沒有覆蓋結果。

我總是收到以下消息:「生成空結果:沒有使用檢測二進制文件,查看任何檢測問題的測試運行詳細信息」,但該文件中沒有報告任何問題。

此外,彈出事件日誌中的VSPerf錯誤。我submitted this as a bug to Microsoft。但是,這可能與我的機器有關。由於我剛剛提交了該錯誤,因此我不知道其他人是否可以重現該問題。

+0

聽起來令人沮喪..我還沒有嘗試過自己,但它聽起來應該是可能的。如果你想出來,請大聲喊出來! – stiank81 2010-05-06 11:09:16

+0

我試圖設置它,並讓nunit運行插裝程序集,但代碼覆蓋數據丟失。 Upvoted你的MS站點上的錯誤。 – LeffeBrune 2011-07-15 18:32:27

+0

確保您使用x86 runner進行測試(nunit-console-x86.exe)。 – LeffeBrune 2011-07-15 18:56:31

5

經過一個多小時的擺弄之後,我無法讓它正常工作。使用nunit-console.exe,我能夠使用NUnit 2.5.5的檢測工具正常運行通用測試。儘管NUnit控制檯運行器通過通用VSTest成功運行了我的測試,但我始終無法生成代碼覆蓋率結果。

儘管VS2010的測試功能在閱讀時聽起來很棒,但實現過程似乎過於複雜和繁重。多年來,我一直在使用NUnit,並取得了巨大的成功,並且摩擦非常低。

我決定嘗試JetBrains dotCover測試版,並在5分鐘內下載它,安裝它,並且能夠非常成功地配置和使用它。它無縫集成到ReSharper 5中,並且只是爲我的NUnit測試工作。代碼突出顯示是一個很棒的可視化工具,用於快速定位未被測試執行的代碼塊。

2

您需要在NUnit中關閉shadowcopy才能使其工作。爲此,請使用/ noshadow標誌。

例如C:\ Program Files(x86)\ NUnit 2.6 \ bin \ nunit-console-x86.exe MyLibrary.dll/noshadow

2

我試過我在Google上找到的每個方法,然後決定給TestDriven.NET一個嘗試。它出色地工作:解決方案的右鍵點,測試覆蓋範圍並完成。嚴重的是,它不會更容易。

2

我有同樣的問題,我找到了解決方法。 「代碼覆蓋細節」對話框中顯示的項目dll是錯誤的組件,需要進行檢測,結果是空的。所以你需要從另一個文件夾中獲取該DLL,它位於單元測試項目文件夾中!既然你已經添加爲你的單元測試項目的參考,它將會在那裏。因此,例如,我創建了一個簡單的項目計算器,然後創建了一個名爲TestCalculator的單元測試項目,並在單元測試項目中添加了Calculator.dll作爲參考。因此,在「代碼覆蓋細節」對話框中,單擊「添加程序集」,然後從「.. \ TestCalculator \ bin \ Debug」文件夾中選擇Calculator.dll。這樣就可以工作。

26

Visual Studio 2012增加了對第三方單元測試框架的支持。

可用的測試框架插件包括:

  • NUnit的
  • xUnit.net
  • MbUnit的
  • QUnit
  • 茉莉花

增加支持是非常容易的,因爲你可以從Visual Studio擴展管理器添加它。

例如,您可以添加「NUnit測試適配器」。

而現在「分析代碼覆蓋率」與第三方單元框架一起使用。你可以檢查所有的測試或者只有一個。

如果您使用VS 2010不害怕升級到VS2012,因爲sln文件是兼容的(您需要VS2010 SP1)。

+1

這是做到這一點的方法。如果這能夠正常工作,我不會浪費你的時間去做點滴(更復雜的解決方案)。 – 2013-04-29 01:15:39

+1

僅適用於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

0

該主題中的許多答案對我有很大的幫助,但從多個答案中獲取所有小細節已經過去了。

我編的6個暗示,由斯科特·溫斯坦標記的答案一起做的伎倆我的列表: Running NUnit tests in Visual Studio 2010 with code coverage

雖然我不上兩個答案應該upvotes,只是饒了我downvotes複印:

  • 斯科特·溫斯坦
  • 約翰和斯科特·麥凱
  • 麗麗
  • mnemosyn

Upvote them!