2010-10-20 63 views
14

我開始使用NUnit在C#中用Visual Studio 2010編寫測試用例。我想用NUnit來測試.dll(一個C#類庫項目)的公共函數。我如何設置NUnit來處理我的項目?如何設置NUnit來運行我的項目的單元測試?

  1. 我應該添加NUnit的代碼相同的類庫項目來測試對,或者我應該在NUnit的測試用例相同的解決方案添加一個單獨的項目?最佳做法是什麼?

  2. 如果我需要爲NUnit測試用例創建一個單獨的項目,我應該將它作爲類庫項目還是可執行文件?如果我把它變成一個類庫項目,我該如何運行它?

  3. 如果我需要測試一個可執行文件和而不是一個類庫項目,是否對流程和/或項目有任何更改?

+0

如果您已經安裝了ReSharper,你可以右擊你的測試項目來運行所有的單元測試你擁有了一切設置完畢後。 – reggaeguitar 2014-01-22 16:02:32

回答

15

Re 2

通常,將[test case dll]與[business logic dll]分開。您的業​​務邏輯DLL不應該包含NUnit的任何知識,以分離問題並簡化部署/維護。

您的測試用例的dll應該包含對NUnit的引用,以及您的業務邏輯dll。

您不需要共享名稱空間。您可以通過修改業務邏輯DLL的AssemblyInfo.cs文件將內部業務邏輯DLL的成員公開給測試用例DLL,以將內部公開給測試用例DLL。這可以讓您在業務邏輯DLL中保留所需的可見性。

回覆3

你的測試用例應該在一個dll(即類庫項目)。您可以直接將其加載到NUnit的用戶界面中,或者在集成環境中使用NUnit的控制檯運行器來自動運行測試。

我是怎麼做的:

  • 開放測試用例類庫項目 性能,調試選項卡
  • 用外部程序打開:給你的nunit.exe
  • 設置命令行 點參數 您的測試用例dll的確切名稱: MyTests.dll
  • 工作目錄:只需點擊 省略號按鈕,它將爲 預選測試DLL輸出 目錄當前構建 配置
  • 設置的測試項目是在 解決方案 默認啓動的項目;這樣一來,只要你打 F5(或「播放」按鈕),NUnit的將 主動走上前與更新後的測試 預裝 - 非常方便和快捷 。

最好的運氣 - 也嘗試測試項目類型AVL。在Visual Studio中,它與NUnit非常相似。我仍然喜歡NUnit,但在學習時嘗試一些不同的選項是很好的。

+0

謝謝,問題回答! – George2 2010-10-21 02:53:24

+0

很好的答案,謝謝! – BClaydon 2013-06-15 19:48:12

8
  1. 單元測試應該在一個單獨的測試項目相同的解決方案下。
  2. 是的,讓它成爲一個類庫項目。如果你想在NUnit運行測試,this tutorial can show you how

關於您的評論:當您將NUnit.exe設置爲測試類庫(包含您的單元測試的默認啓動可執行文件)時,您告訴NUnit您要測試哪個DLL;在第一次之後,它會記住你正在進行測試的項目。

您還希望確保在單元測試庫中引用了其他項目的引用。

再一次,我列出的教程經歷了所有這些。

+0

謝謝!如果使用另一個測試項目來對照類庫進行測試,那麼測試項目是如何知道它是針對類庫進行測試的呢?我需要做的類庫項目從測試項目參考爲了確保哪些項目測試項目測試反對? – George2 2010-10-20 16:06:33

+1

這和3號,沒有什麼變化 - 你的可執行文件可以在完全相同的方式爲您的圖書館進行測試。是的,你的測試項目需要引用它正在測試的項目。 – Lunivore 2010-10-20 16:08:01

2

2:您應該將所有的NUnit測試放在同一個解決方案中的單獨項目中。構建項目會構建測試,反之亦然,因此,當您正在TDDing此項目時(您正在這樣做,對吧?),您可以簡單地運行測試,並將構建必要的一切。 3:類庫。如果您使用的是NUnit,它不需要由Windows運行;你只需要使用測試跑步者。

+0

謝謝!如果使用另一個測試項目來對照類庫進行測試,那麼測試項目是如何知道它是針對類庫進行測試的呢?我需要做的類庫項目從測試項目參考爲了確保哪些項目測試項目測試反對? – George2 2010-10-20 16:07:31

+1

您需要使用using語句在代碼中引用被測對象的名稱空間,但只要被測試的項目和具有該測試的項目處於相同的解決方案中,您就應該能夠看到其他類而不必添加實際參考;編譯器將爲您創建內部解決方案引用。 – KeithS 2010-10-20 16:18:23

2

我會爲測試代碼添加一個單獨的測試項目,並引用NUnit和來自該測試的庫。它應該是一個類庫,並且它由NUnit測試運行器運行,例如nunit-console test_assembly.dll - 請參閱documentation

+0

謝謝!如果使用另一個測試項目來對照類庫進行測試,那麼測試項目是如何知道它是針對類庫進行測試的呢?我是否需要將測試項目引用到類庫項目中以確保測試項目正在測試什麼項目? – George2 2010-10-20 16:08:19

相關問題