2010-01-01 96 views
7

我正在嘗試使用C#進行單元測試。不同的人告訴我要使用NUnit,因爲它比MSTest更好(顯然,我不知道),並且它在我正在使用的ReSharper中也有很好的支持。如何使用ReSharper創建NUnit測試?

現在我從來沒有在我的生活中寫過單元測試(跟我一起,我是一名大學生)。 ReSharper有這個很好的CreateUnitTests上下文菜單選項,我已經看到其他人(隨便看肩膀)使用取得巨大成功。你右鍵點擊一個方法,選擇CreateUnitTests,然後你就可以創建一個測試框架。你只需填寫重要的部分。

現在,當我嘗試相同的時候,ReSharper希望我創建一個新的測試項目......當我讓它時,它創建(我假設)一個MSTest項目,顯然是一個MSTest測試模板。但我已經有了一個引用「nunit.framework」的類libarary項目,並且有幾個NUnit測試,ReSharper更願意運行。不過,它只能創建MSTest測試模板,並且只能在特殊的「測試項目」項目中使用。

我在做什麼錯?我是否做錯了什麼,或者正在創建ReSharper不可能的NUnit測試模板?我搜索了網絡,閱讀了ReSharper和NUnit的文檔,我仍然無法弄清楚這是甚至可能的或什麼。

如果有人能爲我提供一個使用ReSharper + NUnit的指南,我將不勝感激。

編輯:我使用ReSharper的4.5和NUnit 2.5.3

EDIT2:顯然,我是個白癡。 CreateUnitTests不是ReSharper的一部分,而是Visual Studio的一部分,因此只能用於MSTest。

回答

12

在您的Resharper創建的測試項目中,刪除對Microsoft單元測試DLL的引用(我不記得名稱爲off,但名稱相當長)。

然後添加一個新的引用--nunit.framework.dll,你應該在添加引用對話框的第一個選項卡上找到它。

using NUnit.Framework添加到單元測試類文件。

然後,您需要更改屬性:

[TestClass] to [TestFixture] 
[TestMethod] to [Test] 

所以,如果你結束了一個MSTest的項目,使用上面的步驟來代替NUnit的。

注意:resharper 4.5以上不支持運行MSTest以及NUNit測試。所以你可以嘗試一下。

+1

但是,增加與CreateUnitTests新的考驗又增加了對Microsoft測試DLL和再次使用的TestClass代替的TestFixture等等......我不得不刪除這些非常時間?這是否意味着ReSharper只能創建MSTest測試模板? – Lucas 2010-01-01 22:53:33

+3

我不熟悉Resharper的選項 - 你確定它是Resharper給你創建單元測試的選項嗎?我使用Visual Studio 2008 Team System,當我右鍵單擊某個方法時,我會看到「創建單元測試」選項。由於這是VS的一部分,它將始終使用MSTest。我不確定它是否是Resharper這樣做的。要找出的一個是禁用Resharper(工具 - > Addins),並創建一個單元測試,如果它使用MSTest,那麼它不是Resharper。 – 2010-01-01 22:59:39

+0

啊,我明白了。顯然我是個白癡。 – Lucas 2010-01-01 23:03:05

5

你不需要運行任何嚮導來使用NUnit。您可以創建一個類庫,添加對NUnit的引用,並用相應的屬性標記您的測試。奇才僅適用於MSTest,即使如此,也不是必需的。

一旦你進行了單元測試,ReSharper測試運行器將檢測到它們,在左邊空白處,你會看到一些圖標,允許你運行/調試測試。看到第一個圖像這裏的一個例子:

NUnit and ReSharper