2010-05-26 221 views
21

我們最近從Visual Studio 2008升級到了Visual Studio 2010.作爲我們代碼庫的一部分,我們有一組非常大的NUnit測試。我們希望能夠在Visual Studio中運行這些單元測試,但已啓用代碼覆蓋範圍。我們有ReSharper,因此可以在Visual Studio中運行測試,但它不允許代碼覆蓋工具完成它的工作並生成覆蓋率統計信息。在代碼覆蓋範圍內運行Visual Studio 2010中的NUnit測試

有什麼辦法可以使這項工作,或者我們將不得不將測試轉換爲MSTest?


編輯:我們已經嘗試了建議的工具:

  • TestDriven.Net
    這將運行NUnit的測試Visual Studio中罰款,甚至與代碼覆蓋率的作品,但它也包含測試作爲覆蓋程序集的一部分。似乎沒有排除測試的方法,但包括正在測試的程序集(我們的測試與他們測試的代碼不同)。我們也不想花2000英鎊的額外費用,因此我們需要爲整個團隊獲得TestDriven.net。

  • 加利奧
    這沒有奏效。爲了獲得覆蓋輸出,測試需要在Visual Studio測試運行器中運行。 Gallio不支持NUnit。

有沒有進一步的想法?我們確實發現了一些開源嘗試來獲得這種類型的東西,但它們很陳舊,並且很長時間沒有被觸及(因此不支持VS2010)。

+2

另一個想法:向Microsoft發送一封郵件以使其工具更具可擴展性(例如,運行任何程序以在Ncover中進行codecoverage分析) – schoetbi 2011-01-18 12:42:53

回答

6

gallio自動化框架是一個開放源代碼項目,它應該允許你完成這個任務。該站點位於http://www.gallio.org/上一版本中有最初的VS2010支持,在夜間版本中有更多的工作。

有在此位置的詳細信息:http://weblogs.asp.net/astopford/archive/2010/04/13/gallio-and-vs2010.aspx

但是,如果你的錢用在這看看http://TestDriven.Net

+2

對於TDD.Net爲+1。如果您使用nCover的Community Edition進行覆蓋,並且已將項目升級到.net4,則可能需要購買完整版本,因爲我在試用Community Edition時不支持.net4程序集。雖然值得投資。 – Pondidum 2010-05-26 15:21:47

+1

TDD.net也有一個完全免費的非商業用途的個人版。 – 2010-09-08 12:56:45

1

阿德里安,

看一看TestMatrix - 它會運行你的單元測試,代碼覆蓋率和單元測試性能分析 - 並且所有這些都本地集成到Visual Studio中。

+0

這看起來不錯,但與我們已經支付(很多!)的VS2010溢價已經提供給我們的「免費」工具相比,它仍然相當昂貴。 – adrianbanks 2010-05-28 08:56:41

+1

有效的點,阿德里安!如果你付費的VS2010工具是做你想做的......再一次,相比於你爲VS2010版本付費的代碼覆蓋率,TestMatrix是免費的,你不同意嗎? – sergeb 2010-05-29 05:39:45

6

Jetbrains似乎正在用一種名爲「dotCover」的新產品來解決這個問題。它仍然處於起步階段,但考慮到他們的良好記錄,它應該很快成爲主力球員。

直到它釋放,你可以「測試」位於here的夜間構建。

+1

作爲更新版本,[dotCover公開發布](http://www.jetbrains.com/dotcover/),目前版本爲1.1 – gorohoroh 2011-07-12 18:16:54

1

我在CodePlex上發現了Code Coverage Runner項目,它通過一個適配器橋接VS測試和NUnit API。截至撰寫本文時,該項目自2008年3月以來尚未更新,但可能適合您的需求。

2

你可以得到VS 2010的代碼覆蓋功能,在運行NUnit的測試,但它的配置工作地獄工作:

設置在運行NUnit控制檯-x86.exe程序這樣一個通用的測試:

Does VS2010 Code Coverage support nUnit? (爲簡化的xUnit說明)

http://msdn.microsoft.com/en-us/library/ms182624(v=vs.100).aspx (一般說明)

確保:

  • 您已激活「儀器就位」。信任VS的部署將不起作用
  • 您運行nunit-console-x86.exe。 64位版本不起作用。
  • 所有需要代碼覆蓋結果的庫都被構建到一個文件夾中。複製它們(例如通過構建事件)將不起作用。 (對於高級版:您可以在不同於其構建輸出文件夾的位置使用這些庫),但這非常棘手。)
  • 包含所有庫的文件夾是通用測試的工作目錄,並且從中啓動NUnit。
  • 您將參數提供給NUnit作爲工作文件夾的相對路徑。
  • 您還提供NUnit的使用命令行選項/ noshadow

當您複製從不同的文件夾您的dll成測試一個文件夾中,奇怪的事情可能會發生。我舉個例子,得到的結果是幾乎所有的代碼單元測試被掩蓋時運行單元測試。 真遺憾,那代碼覆蓋的確不是不是找到庫,經過單元測試!

那麼,在建立所有構建輸出目錄後,我遇到了最奇怪的問題:從該文件夾NUnit不運行。我有它從2個不同的位置運行,但它在這裏「找不到nunit-console-runner.dll」。

我唯一正確的通過在其他位置插裝測試庫得到它:

  • 測試>編輯設置>本地
  • 數據和診斷>代碼覆蓋
  • 停用原來的位置,並添加來自測試文件夾的文件夾

今天它立即工作,但有一天我試圖讓地點正確大約一個小時。我仍然不知道那天我搞砸了什麼。

相關問題