我已經給系統測試一個大約1600行長的PHP腳本,並通過cron運行每分鐘的任務。該腳本是100%程序化的,並以30+個require_once()調用開始,這會調用整個代碼庫。這個系統是如何從一開始就設計的。PHP系統測試 - 1600行程序腳本
我被告知重構不是一個選項,因爲目前沒有測試用例。
問:
我跑進在腳本中間的「新」類的構造函數。這個類的構造函數在不同的類中創建一個工廠。我不關心類構造函數或工廠。有沒有辦法繞過功能,而不必模擬,存根等?
問題:
-The需要()在腳本的開始阻止我創建存根,因爲我不能有兩個名稱相同的功能。 (真實函數和存根函數)
- 'new'位於腳本的中間,所以我不能向創建的對象添加模擬。
男人,這聽起來很像我在工作中要處理的代碼。我不打算髮布這個答案作爲答案,因爲它是無用的,但我會這樣說:現在忘記*單元*測試。您可以對腳本執行自動*集成*測試,並在重構時慢慢構建* unit *套件。當然,集成測試更加困難和困難(特別是僞造數據來執行強制錯誤狀態以獲得更好的代碼覆蓋範圍),但是短期內可以實現的更多,至少它會給你*一些*多種測試能力。 – Charles 2011-04-08 00:26:58
親愛的! [Michael Feathers](http://www.objectmentor.com/omTeam/feathers_m.html)寫道[使用遺留代碼有效地工作](http://www.amazon.com/Working-Effectively-Legacy-Michael-Feathers/ dp/0131177052),其中列出了在這種嚴格按壓不存在測試的情況下使用的技術。他使用的示例不是PHP,但技術和它們的討論非常有用。推薦閱讀。查看亞馬遜的評論,其中描繪了本書內容的圖片。 – olleolleolle 2011-06-07 07:48:13