2011-03-14 88 views
13

我搜索了單元測試工具,發現合適的是NUnit,我認爲它很好,但是我的問題是這個工具只顯示測試方法結果(通過或失敗),我不僅需要顯示通過或失敗的輸出。如何使用NUnit顯示輸出或者是否有其他單元測試工具它也很好?如果不支持,請告訴我如何解決它。單元測試顯示輸出

所有的想法都歡迎

回答

4

在NUnit的底部酒吧,您可以單擊文本輸出和顯示所有調試和控制檯輸出。

+0

確定,當我調用方法getEmp(10),它會返回Emplyee對象與名字及姓氏和職位及年齡和......所有members.That的我需要 – 2011-03-14 18:59:09

+1

你可以使用System.Diagnostics程序。 Debug.Write或System.Console.WriteLine將您感覺的任何信息寫入NUnit Text輸出。 – 2011-03-14 19:02:02

+0

我可以獲取返回的對象的屬性,因爲我不知道該對象。我需要打印對象(員工或公司或...)中的所有屬性 – 2011-03-16 18:33:40

5

管道System.Console的輸出將適用於NUnit,但它不是您的最佳選擇。

對於通過測試,您不需要查看控制檯輸出以驗證測試是否已通過。如果你是,你做錯了。測試應該是自動的,可重複的,無需人工干預。手動驗證不會縮放併產生誤報。另一方面,有失敗測試的控制檯輸出是有幫助的,但它只會提供否則可以從附加調試器推斷的信息。這是很多額外的努力來將控制檯日誌記錄添加到您的應用程序中,但收效甚微。

相反,請確保您的錯誤消息是有意義的。在編寫測試時,確保你的斷言是明確的。始終嘗試使用與您正在聲明的對象非常接近的斷言,並提供解釋測試重要性的失敗消息。

例如:

// very bad 
Assert.IsTrue(collection.Count == 23); 

上述說法並沒有真正提供多少幫助時,測試失敗。當NUnit格式化斷言的輸出時,這個斷言不會幫助你,因爲它會表示類似於「期待<真>但是<假>」。

更合適的斷言將提供更有意義的測試失敗。

// much better 
Assert.AreEqual(23, collection.Count, 
       "There should be a minimum of 23 items by default."); 

這提供了一個有意義得多失敗消息:「期待< 23>但< 0>:應該在默認情況下是最小的23項

+0

看到你的迴應後,我想知道我是否誤解了,他是否想要他在代碼或測試輸出中生成的輸出?它只是說輸出,所以我可能一般會假設輸出。 – 2011-03-16 12:55:16

+2

我認爲這也是一般輸出。我的觀點是,如果你必須依靠一般輸出,因爲通過/失敗是不夠的,你應該重新考慮你的測試方法。 – bryanbcook 2011-03-16 15:42:51

+0

不,我需要我的輸出不是一般output.You是正確的耶穌,我試圖測試它 – 2011-03-16 18:31:01

0

這取決於你在哪裏想要從測試中輸出數據。 我相信你從File, Log, Console, Debug輸出中提到了另一個。 作爲替代NUnit允許輸出的常規測試輸出流中的任何消息,只需要使用下面的實用方法:

對於成功的測試

Assert.Pass(string message, object[] parms); 

對於失敗的測試

Assert.Fail(string message, object[] parms); 

更多細節見here

+0

這些方法結束測試。 – 2015-11-04 06:30:51

0

這個帖子在問題被問到之後是loooooong,但想chim e in。是的,你可以在單元/集成測試中完成很多工作,並且可能完成大部分你需要的工作。所以,我同意,儘可能在測試方法上儘可能多地做。

但有時,提供一些輸出是有用的。特別是如果您需要進一步驗證結果,並且無法通過單元測試來完成驗證。想象一下你的開發/測試環境沒有或有限的訪問權限的外部系統。

舉一個例子,假設您正在創建一個Webapi來創建一個聲明,並且響應是新的聲明編號。但是api並沒有公開獲取聲明的方法,並且您需要驗證在進行webapi調用時創建的其他一些數據。在這種情況下,您可以使用輸出的索賠編號手動檢查遠程系統。

FWIW