假設我有一個模板方法template(),它調用m1()和m2()。我有m1和m2的測試。現在在測試template()時,應該使用mocking來檢查m1和m2是否被正確調用,或者測試其API或兩者。使用嘲諷框架的測試模板方法;是不是低級
我覺得測試來檢查模板的算法(使用嘲諷)是低級別的,幾乎就像檢查每一行源代碼。
我想聽聽其他人對此的看法。
假設我有一個模板方法template(),它調用m1()和m2()。我有m1和m2的測試。現在在測試template()時,應該使用mocking來檢查m1和m2是否被正確調用,或者測試其API或兩者。使用嘲諷框架的測試模板方法;是不是低級
我覺得測試來檢查模板的算法(使用嘲諷)是低級別的,幾乎就像檢查每一行源代碼。
我想聽聽其他人對此的看法。
我喜歡執行兩種類型的測試:隔離和集成。
我的隔離測試包括通過嘲笑與其他類的所有交互來進行單元測試。使用像Powermock這樣的模擬框架,我可以模擬出所有的對象交互,並驗證每次測試過程中發生的所有已定義(而未定義)的交互。這些隔離測試是低級別的測試,可以爲您提供團隊期望的代碼覆蓋率度量。像Hudson這樣的持續集成工具可以用來自動執行異構單元測試的運行和度量收集。
集成測試涉及運行調用多個類的流。我喜歡構建測試快樂路徑場景以及一些錯誤場景的自動化套件。不過,我不會構建和維護觸摸應用程序中每行代碼的套件。這是一個成本和風險的決定。如果您可以使用像fitnesse這樣的工具自動執行集成測試,那麼您還可以使用集成測試作爲開發環境的煙霧測試,並根據需要全天運行它,以確保您的應用程序和環境運行正常且沒有問題。
我認爲這是一個很好的想法。我認爲對此沒有單一的正確答案,因爲在決定測試方法時需要考慮很多因素。
當我們測試交互(使用模擬框架來檢查期望)是不是我們的測試與實現綁定?而如果我們在API級別進行測試,即無論javadoc如何承諾,那麼實現都可以自由更改。我可以看到檢查發佈 - 訂閱場景預期的價值,但我不太確定模板方法。 – Susanta 2012-03-23 20:22:54