我想爲我尚未實現的Queue類提供測試用例。在嘗試編寫testEnqueue方法的代碼時,除了使用size()或dequeue()之外,我找不到驗證方法。可以在單元測試公共方法時使用另一個公共方法進行驗證
使用其他公共方法(例如:size/dequeue)來驗證同一類的公共方法(enqueue)的測試用例是否正確?
我想爲我尚未實現的Queue類提供測試用例。在嘗試編寫testEnqueue方法的代碼時,除了使用size()或dequeue()之外,我找不到驗證方法。可以在單元測試公共方法時使用另一個公共方法進行驗證
使用其他公共方法(例如:size/dequeue)來驗證同一類的公共方法(enqueue)的測試用例是否正確?
據我所知,你在這裏看到一個經典的雞和蛋的問題 - 你怎麼能測試a()
和使用b()
驗證其行爲,然後通過使用a()
測試b()
。從理論角度來看,如果兩者都不正確,測試可能仍然會通過......就像使用JUnit測試JUnit一樣。但是如果你把你的代碼當作一個黑盒子(這是TDD的情況),而你只需編寫測試給你的類/單元一些輸入並驗證輸出,那麼這種方法沒有任何問題。只要記住要測試所有典型案例和角落案例/邊界條件 - 如果它們符合您的業務預期,可能會出錯?
是的,這無疑是一種合適的驗證手段。
是的,通過對象的外部接口進行測試是理想的(與黑客入侵其內部進行驗證)。只要每個行爲都經過測試,就不會有任何問題。如果Enqueue依賴於Size()並且Size已經被證明可以按照預期工作,那麼你可以像你提到的那樣安全地編寫測試。
對於這個例子,我可能從實現Size()[0元素,用1,n元素創建的隊列]開始。然後移至Enqueue()並驗證Size是否增加1.
您正處於正確的軌道上。