2011-08-04 44 views

回答

1

據我所知,你在這裏看到一個經典的雞和蛋的問題 - 你怎麼能測試a()和使用b()驗證其行爲,然後通過使用a()測試b()。從理論角度來看,如果兩者都不正確,測試可能仍然會通過......就像使用JUnit測試JUnit一樣。但是如果你把你的代碼當作一個黑盒子(這是TDD的情況),而你只需編寫測試給你的類/單元一些輸入並驗證輸出,那麼這種方法沒有任何問題。只要記住要測試所有典型案例和角落案例/邊界條件 - 如果它們符合您的業務預期,可能會出錯?

3

是的,這無疑是一種合適的驗證手段。

2

是的,通過對象的外部接口進行測試是理想的(與黑客入侵其內部進行驗證)。只要每個行爲都經過測試,就不會有任何問題。如果Enqueue依賴於Size()並且Size已經被證明可以按照預期工作,那麼你可以像你提到的那樣安全地編寫測試。

對於這個例子,我可能從實現Size()[0元素,用1,n元素創建的隊列]開始。然後移至Enqueue()並驗證Size是否增加1.

您正處於正確的軌道上。