2013-02-06 65 views
2

我已經閱讀/關注了很多關於TDD & BDD最近我真的很想掌握它。我一直是一個開發人員,只寫代碼,然後從外部測試它(就像我們總是開始)。這個問題似乎是在與TDD一起啓動和運行。我想創建一個簡單的Winform應用程序,我想在其中顯示一些可以說產品的列表。我只是不知道從哪裏開始,我應該先爲控制器寫一個測試嗎?控制器需要參考視圖和服務等等。 ASP.Net MVC是爲測試而構建的,因此它開始有點容易,但Winforms真的很痛苦。請給我一些在Winforms中顯示TDD的視頻(最好提供)。如何開始使用WinForms的TDD

我看過大量的視頻,顯示您測試的課程或功能,但如何測試不支持測試的用戶界面?

總之我想知道是否有人已經做TDD一會兒, 怎麼做他/她做它的WinForms?

我寫了大量的代碼,我剛剛刪除,因爲我卡住了,請幫助!

回答

3

下面是我如何做它的任何類型的用戶界面,無論是Web或Winforms或WPF或Swing在Java中,甚至是一個將被另一個系統使用的Web服務接口。

  • 編寫用戶界面,並對其後面的任何數據進行硬編碼。
  • 編寫一個控制器,並將硬編碼的數據移動到控制器。控制器應該只是以UI可以理解的形式呈現數據。

你的控制器現在沒有任何行爲;只是靜態數據 - 但它爲UI提供了正確的API,現在你知道UI如何使用它。

  • 編寫一個示例,顯示UI如何以最基本的形式使用控制器。
  • 讓示例工作。
  • 編寫另一個示例,顯示控制器在不同上下文中的行爲方式。
  • 讓示例工作。

這些是你的單元測試!如果你知道你的控制器需要一些其他的類來進行協作,你也可以嘲笑這些。

一旦你的合作者被嘲笑,你已經知道控制器是如何使用它們的。同樣,您已經擁有適用於這些協作者的API,因爲控制器正在使用它們。

這就是我們在BDD中討論「outside-in」時所要做的。

+0

感謝Lunivore提供反饋。這真有趣!我會試一試。我喜歡你的解決方案是採取寶寶一步,先寫熟悉的代碼。一旦掌握了這項技術,我就可以採用純粹的測試技術。謝謝你的回覆非常有用。 –

+0

那麼,我從來不寫UI的單元測試 - 太多美學。但是,是的,如果您願意,可以先寫BDD方案。這是一個好的開始。祝你好運! – Lunivore

2

我也是TDD的新手,和你一樣,我正在努力學習。下面是我在我的搜索想出的,也許它會幫助你太:

  1. 退房Roy Osherove's website,也是他的著作「The Art of Unit Testing」。看看這些視頻,有一些很棒的視頻,特別是「配對編程」部分。他的書是我讀過的關於單元測試和TDD的唯一最好的書,也是我從封面讀到的唯一一本封面。
  2. 查看一些TDD卡塔斯。我在前面的項目中建議的網頁上有一些內容。看看其他人如何解決卡塔斯。這真的很有幫助。
  3. 閱讀有關依賴注入。
  4. 如果您想在WinForms中使用TDD,請查看MVP模式。據我所知,它是用於將UI與業務代碼分開的事實上的模式。

祝你好運與您的搜索。

+0

謝謝你,你的投入是非常有價值的,你已經參考了一些偉大的視頻和書籍。非常有用!感謝您的回覆。 –

0

控制器是一個很好的起點。將View public api提取到接口,並使用Mocking Framework測試控制器與該接口的交互。你也可以爲服務層做同樣的事情。 另外,我會採用自下而上的方法來測試這個應用程序,並在向UI層添加測試之前測試較低層次的層次。在UI層上,我將使用BDD框架編寫一套Acceptance Tests,並使用模擬框架使這些測試變得輕量級並減少測試次數。

祝你好運!