私は長い間、TDDスタイルのコードを設計および開発してきました。TDDについて私を悩ませているのは、ビジネスロジックや興味深い動作を含まないコードのテストを作成することです。TDDはテスト以上の設計アクティビティであることは知っていますが、これらのシナリオでテストを記述することは役に立たないと感じることがあります。
たとえば、「ユーザーがチェックボタンをクリックすると、ファイルの有効性をチェックする」という簡単なシナリオがあります。このシナリオでは、通常、以下のようなプレゼンター/コントローラークラスのテストの作成を開始します。
@Test
public void when_user_clicks_check_it_should_check_selected_file_validity(){
MediaService service =mock(MediaService);
View view =mock(View);
when(view.getSelectedFile).thenReturns("c:\\Dir\\file.avi");
MediaController controller =new MediaController(service,view);
controller.check();
verify(service).check("c:\\Dir\\file.avi");
}
ご覧のとおり、動作を検証するための設計上の決定や興味深いコードはありません。MediaServiceに渡されたビューから値をテストしています。私はいつも書いていますが、この種のテストは好きではありません。これらの状況についてどうしますか?あなたはいつもテストを書いていますか?
更新:
苦情の後にテスト名とコードを変更しました。一部のユーザーは、このような些細なケースのテストを記述して、将来誰かが興味深い動作を追加する可能性があると述べました。しかし、「今日のコード、明日のデザイン」についてはどうでしょう。?私を含む誰かが将来さらに興味深いコードを追加した場合、そのテストを作成できます。ささいなことでなぜ今やらなければならないのですか?