2009-04-14 83 views
2

最近,我開始在我們的產品中開發Email2SMS功能。當我加入項目時,這個組件通過單元測試沒有代碼覆蓋率。遺留代碼。用於命令行集成測試的PHPUnit

自從我開始研究它之後,我開始使用測試優先方法。但代碼質量非常低。通過單元測試很難分割並測試小塊,所以我決定編寫集成測試。

有php腳本,它接受一些消息信息,在數據庫中搜索用戶並保存一些信息,如果一切正常。

$last_line = system('php emailtosms.php -file=unicode_message.txt ', $retval); 

$this->assertStringExistsInLogFile('Email to SMS message was not sent'); 

這是不好還是不好?你會如何解決這個問題?

回答

3

不太好。

通過將emailtosms.php腳本作爲處理命令行參數的簡單包裝器,然後傳遞給更多可測試類來測試較低級別。根據最後一步,你可以編寫單元測試來完成除最後發送之外的幾乎每一個單元測試(也許模擬實際發送它的最後一步,然後將它存儲到一個變量中,然後檢查你在那裏是否有效)。

最終的整合,運行完整的類端到端,並檢查它的輸出,看最後的日誌 - 或更高一級的日誌,將被放入什麼。