2010-06-03 60 views
4

我試圖使用TDD實施策略模式。每個戰略項目實現一個接口。用TDD做這件事的最好方法是什麼?具有策略模式的TDD

您是否必須爲接口的每個實現創建一個測試夾具,以測試相同的方法,但每個實現都是如此?

詳細採取的做法的任何條款將感激地歡迎:)

+0

你是什麼意思測試夾具?你的意思是測試套件? – 2010-06-04 04:30:00

+0

對不起,正在用NUnit術語。 TestFixture在單個類中包含測試方法 – ChoccyButton 2010-06-04 10:08:58

+0

以下是一篇有趣的文章:> [** TDD kata for building策略 >模式在域模型中**](http://codingsolutions.blogspot.com/2010/05 /tdd-kata-for-building-strategy-pattern.html) >> [Some Code](http://github.com/dgadd/TDD-Kata--Strategy-Pattern-for-Domain-Model) – 2010-06-03 12:46:59

回答

1

我想我會寫一個單獨的測試類策略的每個實現。

你可以爲所有這些繼承自一個抽象類。這將有助於確保您爲每個策略實施所有測試,但有一個小缺點,即您必須至少在每個測試類才能編譯之前實施存根方法。

2
  1. 寫測試失敗
  2. 寫醜陋的代碼,以使該測試通過
  3. 重構使代碼更

在步驟2中,寫未執行代碼策略模式(即使存在重複的代碼,最簡單的工作方式)。

然後,在步驟3中,如果這樣做仍然有意義,則可以將每個類逐一重構爲戰略模式。

如果你真的在做TDD,那麼你不會從模式開始 - 你要重構它。

+0

這並不能真正回答任何問題。是的,你可以這樣做。但有經驗的開發人員可以在一英里外發現模式。我的問題是,你知道策略模式是正確的解決方案,測試用例的正確結構是什麼 – ChoccyButton 2010-06-04 11:41:59

+1

我的思想肯定是由BDD扭曲的 - 測試用例應該描述類的期望行爲。從測試用例來看,類的實現細節不應該很明顯。爲了DRY,你可以在一個實現接口的通用類中測試很多基本功能 - 或者只是在每個策略項目的測試中允許一些重複。 – ryw 2010-06-04 12:06:21