2014-01-06 78 views
0

現在是時候看到一些看起來很簡單的問題了,我似乎無法找到答案。TDD:構造函數注入和變異測試

我正在開發一個TDD(PHP)庫。據我的理解,當使用TDD時,你不應該寫任何生產代碼沒有先寫一個失敗的測試來保證它

  1. 我有一個mutator方法,它將數據追加到具有私有可見性的數組。我應該如何測試?我應該只測試一下各種訪問器嗎?對訪問者的測試是否應該覆蓋增變器方法?

  2. 測試是否可以測試訪問器和增變器,還是應該單獨進行測試?

  3. 我的庫需要依賴項,我將通過構造函數注入。什麼測試代碼可能會提示我編寫構造函數代碼?

對不起這樣的反對問題。我一直在研究TDD,並且認爲我已經搞清楚了,但只要我嘗試使用它,就會想到所有這些小問題。很顯然,我想確保這一點,我會盡我所能地有效實施。

也許我太嚴格了?也許注入是使用模擬和檢查對使用注入類的方法的期望隱式測試的?

我知道這些問題可能是主觀的,答案可能基於人們的意見,但我對此很滿意。我只是想以一種合理有效的方式開始工作。

非常感謝提前。

+0

只是我對3的回答:「可能是使用模擬隱式地測試了注入,並檢查了使用注入類的方法的期望值?」是的,我就是這麼做的。 –

+0

而且我親自測試了setter + getter,因爲沒有其他方法(我不會嘗試訪問私有屬性,如果實現更改,那麼測試會爆炸)。但我很想知道是否有替代品/更好的方法存在。 –

回答

1

我會一起測試setter和getter方法,因爲這是迄今爲止最簡單的方法,而不必更改數組的可見性,這是​​您不應該這樣做的。這些測試將隱式測試您的注入類。

一般來說,嘗試從另一個用戶的角度編寫你的單元測試,試圖使用你的類測試。你需要思考,這個類應該做什麼或者它的合約是什麼(即這個類包含一個用戶可以添加和刪除的對象數組),然後編寫測試以確定它滿足那個合同。之後,編寫足夠的代碼讓測試通過。

+0

非常好。感謝您的澄清。 :) – thefuzzy0ne