2009-04-14 16 views
2

最近私は、私たちの製品のEmail2SMS機能の作業に着手しました。プロジェクトに参加したとき、このコンポーネントは単体テストによるコードカバレッジがゼロでした。レガシーコード。コマンドライン統合テストのためのPHPUnit

私が作業を開始して以来、私はテストファーストアプローチを使用していました。しかし、コードの品質は非常に低かった。それを分割して単体テストで小さなチャンクをテストするのは非常に難しいので、統合テストを書くことにしました。

いくつかのメッセージ情報を受け入れ、DB内のユーザーを検索し、すべてがOKならば情報を保存するphpスクリプトがあります。

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

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

悪いですか?どのようにこの問題を解決しますか?

答えて

3

あまり良くありません。

emailtosms.phpスクリプトをコマンドライン引数argsを処理する単純なラッパーとして使用し、さらにテスト可能なクラスに渡すことにより、より低いレベルでテストします。最後のステップに応じて、最後の送信を除いたほぼすべてを行うユニットテストを書くことができます(実際に送信した最終ステップを模擬し、変数に格納してそこに有効なものがあるかどうかを確認してください)。

最終的な統合では、完全なクラスのエンドツーエンドを実行し、出力を確認して最終ログを記録します。

関連する問題