2

最近、製品の Email2SMS 機能に取り組み始めました。私がプロジェクトに参加したとき、このコンポーネントは単体テストによるコード カバレッジがゼロでした。レガシーコード。

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

メッセージ情報を受け取り、DB でユーザーを検索し、問題がなければ情報を保存する php スクリプトがあります。

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

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

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

4

1 に答える 1

3

あまり良くない。

コマンドライン引数を処理する単純なラッパーとして emailtosms.php スクリプトを使用して、より低いレベルでテストし、よりテストしやすいクラスに渡します。最終ステップに応じて、最終送信以外のほぼすべてを実行する単体テストを作成できます (おそらく、実際に送信する最終ステップをモックし、それを変数に格納して、そこに有効なものがあることを確認します)。

最後の統合では、完全なクラスをエンドツーエンドで実行し、その出力を確認して、最終的なログを調べます。または、もう少し高いレベルで、ログに記録されるものを確認します。

于 2009-04-14T18:37:12.127 に答える