2010-01-05 138 views
7

我必須承認,我經常爲實踐測試驅動開發而苦苦掙扎。儘管使用了Ruby on Rails,這使得TDD非常容易,因爲它已經過時了,我發現編寫測試太無聊了!這就像牙線使用牙線;我知道我應該這樣做,但要努力爭取更多的熱情。什麼技術可以用來使寫作測試更有趣?

  • 你用什麼技巧使寫作測試變得有趣?例如,我看到的一個提示是圍繞測試夾具數據發明一個小故事,而不是僅僅使用無意義的無關數據。
+12

每次測試失敗時都要喝水 – 2010-01-05 14:57:26

回答

8

如果您先編寫測試,它們是您的編碼規範。

編寫測試時,所有的想法都必須完成。 「應該它呢?」 「我怎麼知道它做到了?」 「它有什麼接口需要被嘲笑?」此外,如果您使用簡單的命名約定(使用「shoulds」)構造測試,則可以更輕鬆地確定應該發生的事情。

請參閱http://weblogs.asp.net/rosherove/archive/2005/04/03/TestNamingStandards.aspx對此的一些想法。

如果你最後寫測試,他們很無聊,因爲你知道的代碼工作。

1

如果你在編寫測試時感到無聊,那麼你正在測試錯誤的東西。當某些事情失敗的時候,當我不明白某些事情或新事物出現時,我正在寫測試。這樣,我的測試絕不是徒勞的,也不符合「100%代碼覆蓋率」政策,我從來不會感到無聊。

3

寫作否定測試通常比「晴天」更有趣。想想你可能會破壞你的課程的所有創新方式(傳遞null,值太大/小等)。

它不僅可以讓你的大腦不同的角度去啃它也會讓你的類更強大的,因爲人們會空,大的數字,等等等等

0

首先,我想寫叫它生產代碼,所以我努力先寫測試:不寫任何沒有失敗測試的代碼行。這並不總是可能的,但至少它迫使我寫測試。

然後我試圖打破我一直在使用邊界測試,負的情況下,錯誤的API使用(如丟失或幾個初始化調用)編寫的代碼...

而且我經常運行測試;最終的「所有測試通過」信息讓我對迄今爲止所寫的內容感到滿意......當我發現(並修復)一個錯誤時,我也很高興。

有時,我正在爲我的測試(出生日期,最喜歡的球員號碼,電話號碼...)使用的名稱和號碼開心。

0

如果您正確使用TDD,則應在編寫代碼之前編寫測試。這應該是一個很好的測試,以確保您正在編寫的代碼有效,並且應該是一個小增量。

因此,它確實是發展的一部分。與編寫一個單元測試相比,編寫一個需要實現代碼的函數有什麼不同?

說,你覺得寫測試乏味,就像是說:「我發現寫I/O無聊..有什麼我可以做,使之更加有趣嗎?」或者「我覺得編寫UI很無聊......」

那麼,實際上編寫任何類型的代碼都可能很無聊,或者很有趣......但這更多的是開發者的功能而不是代碼:)我的朋友被迫爲一家公司編寫代碼,雖然他不是一個真正的程序員,他的評論是「我看不出你怎麼能整天這樣做!」

既然你是一名開發人員,我的感覺是,你不喜歡寫代碼,所以真正的問題是,你沒有關注TDD,使測試開發的實部正常。儘管一個框架可能會試圖做到這一點,但真正由您來正確地遵循這個過程(即先寫測試)並真正將其與您的開發結合起來。

然後,它是真正的全面發展的一個微不足道的一部分,就像在代碼檢查,評論,格式化 - 所有這一切有些人可能會覺得「無聊」,但都是必要的。它不會打擾我們,因爲它只是發展的一部分,我們覺得發展很有趣。

2

我很擔心這聽起來像一個代碼味道

測試是否無聊,因爲它們非常重複?

測試是否涵蓋多次相同的事情? (即測試用例不只是一次測試一件東西,所以有很多重複測試的東西......?)

您可能感到無聊,因爲測試是在錯誤的抽象層次上編寫的,或者他們迫使你做很多沒有必要的繁忙工作。

聽起來好像需要進行重構或者至少抽象的東西,使每個測試表達一些什麼新的或從代碼的其餘部分不同。

如果很多測試看起來很明顯或乏味,那麼您正在使用的抽象中缺少一些東西。

我會開始尋找在種,你覺得測試模式是無聊或繁瑣和看看是否有不能做 - 比如創建一個小的測試框架,以幫助使這些測試更易於編寫

檢查時,你可能只需要刪除一些不使用測試和清理命名 - 這樣很明顯,正是你需要測試,哪些是你可以依靠正在測試套件別處進行測試。

這是所有關於權衡。我認爲值得重新評估你正在編寫的測試類型,並看看可能有哪些替代方案。

1

有一種情況是無聊並不是完全不好。我認爲它比常規代碼更強於測試代碼,但它也可能適用於測試。

當你不知道自己的代碼在做什麼時,當你不信任它,當你每次運行它或者釋放它時,都會感到興奮,這個小傢伙坐在你的肩上尖叫着說:「不! 。當你在調試器中花費大量時間時;當你的代碼太複雜,糾結和粗糙(不是一個好的方式)和可怕的。

無聊可能是興奮的反面,並在那光明,無聊是好的。一步之後,在可預測的步驟之後的可預測的步驟,我們寫出很好的簡單可靠的工作代碼。紅 - 綠 - 重構。

好簡單可靠的工作代碼是我可以熱心的事情。

相關問題