2013-02-15 111 views
5

我一直在嘗試爲我的一個開源項目遵循一個寬鬆的TDD工作流程。這是其他程序員使用的API。我應該在編譯之前編寫測試嗎?

因此,一個關鍵的方面,以及使API「工作」還在設計將如何被消耗掉。我聽到一些人說,在編譯之前編寫測試是浪費時間,並且在API穩定之前可能會不斷重寫。我還聽說,它應該遵循的工作流程如下所示:

  1. 寫這不會編譯測試
  2. 讓它編譯
  3. 讓它綠色

我一直試圖遵循這個工作流程,但我最終會遇到一些奇怪的事情。例如,在我的API我有這兩種方法:

Handles(string pattern); //had this one already 
Handles(IPatternMatcher pattern); //needed this one 

我需要獲得第二種形式的方法添加到我的API。所以,我結束了一個簡單的測試,像這樣:

public void Handles_SupportsIPatternMatcher() 
{ 
    var api=new MyAPI(); 
    api.Handles(new TestPatternMatcher()); 
} 

這似乎是浪費後,它被實施。

我應該繼續遵循這一流程,還是有辦法改善嗎?我如何避免編寫基本上只檢查編譯器錯誤的測試?由於它是一個公共消費品API,我應該擔心這樣的測試嗎?

+1

「Red-Green-Refactor」聽起來比「不會編譯 - 編譯 - 綠色」好得多:P – 2013-02-15 05:21:52

+2

這對於程序員來說是一個非常好的問題.stackexchange.com – 2013-02-15 05:24:36

+1

@SimonWhitehead well ...技術上編譯器錯誤也算作「紅色」:) – Earlz 2013-02-15 05:27:53

回答

1

我使用ReSharper的,你可以創建空手柄方法,該方法將得到IPatternMatcher。 TDD是強大的東西,你應該繼續嘗試。我試着在代碼之前測試代碼和測試代碼之後,我發現代碼之前的測試是強大的東西。您可以非常快速地調試代碼錯誤。測試是保證您的代碼將按照您的預期工作。

3

不要寫測試編譯器是否正常工作的代碼。如果你正在使用動態語言(或靜態語言中的動態特性),那麼他們會實際告訴你你忘記了某些東西,或者將某些東西重構成失敗的單元測試,這些測試很有意義。

單元測試執行的要點是,如果它是在錯誤失敗構建。如果您的代碼中存在編譯器錯誤,則構建將會失敗。沒有必要再次猜測它。

相關問題