2011-05-12 73 views
13

人們似乎對這個話題兩種趨勢:單元測試應該使用日誌記錄嗎?

  1. 一些答案(如this one)建議單元測試不應該記錄任何。
  2. 一些問題和答案(如this one)建議在單元測試中使用不同的記錄技術和格式。

單元測試應該記錄他們做什麼?這些附加信息對單元測試報告有幫助嗎?還是應該單元測試沉默,只要他們沒有失敗?

我的問題針對的是Java單元測試,但是來自其他語言的程序員的輸入也很有趣。

回答

4

我在單元測試中使用了安靜和詳細的日誌記錄,而且我個人更喜歡每次測試都輸出一行測試名稱以及它的行爲。當我能說出正在發生的事情時,我發現它更具吸引力,但我不能說它對我的工作有任何實際影響。

如果你從控制檯運行,我認爲彩色輸出是一個加號。

+0

完全可以將結果記錄到一個流中,並將通常的日誌項目記錄到另一個流中。 – 2011-05-12 09:59:33

7

這顯然有點主觀,但我不明白你爲什麼會禁用日誌記錄在你的單元測試。

我的確認爲你誤解了第一個鏈接的帖子;這張海報並沒有聲稱你不應該記錄任何東西,他說通過/失敗不應該只是在日誌中。它應該返回到測試框架。它應該是一段與正常日誌完全不同的數據。

我同意他的說法。

除此之外,你仍然可以擁有正常的日誌記錄。無論如何,你在測試(或應該有)的課程中都有它。當測試失敗時,您可能會在日誌中看到一些內容,這將有助於您更快速地進行調試。我不明白這怎麼可能是一個負面的問題。

+1

另外,不要忘記你的斷言中的評論。例如,如果您使用Junit,則assertEquals(a,b)比assertEquals更差(「值a和b不正確,bla bla」,a,b)。當測試失敗時,這會增加測試框架報告/日誌的價值 – 2011-05-12 08:44:07

3

單元測試真的應該如此簡單和專注,測試失敗已經記錄出了什麼問題。您不需要通讀日誌以查找測試用例。

然而,它登錄一個大套房的自動化測試的總結果,這樣你就不必通過所有的測試拖網找到失敗的那些個好主意。很高興看到最後可以關注的摘要。

0

如果日誌框架不允許啓用/禁用日誌,那麼它是非常沒用的。因此,隨時添加日誌,只要確保您可以與其他任何東西分開啓用/禁用它們

1

通常,當您編寫測試時,您首先學習的一件事是單元測試不應該連接任何東西 - 數據庫,文件系統,互聯網。無論您的工作環境如何,單元測試都應該快速而且有效地工作。如果它連接到一個集成測試。我認爲使用可能顯着降低單元測試速度的日誌框架是違背單元測試原理的。整個想法是,你可以在你的每一次突發奇想中進行數以萬計的測試。理想的做法是將你的單元測試套件插入你的保存按鈕(不是很合理,但你得到我的漂移)。

相關問題