可能性の重複:
Is Unit Testing worth the effort?愚かに聞こえるかもしれませんが、実際には単体テストですか?
さて、私はユニットテストの目的は、一般的に言っているか知っているが、私は私を気にいくつかのことを発見しました。
1) 早期バグ発見テストの目的。したがって、後の繰り返しの中で、私がコードを少し変更した場合、自動化されたテストでは私のことを忘れてしまったことがあります。
しかし、1クラスAのためのユニットテストを書くとき、彼はクラスB を模擬しているクラスB
それを呼び出す、私はクラスAを持っており、それはいくつかの他のクラスのインスタンスとの対話であると言うことを言いますだから将来的には、クラスBを変更してバグを引き起こすと、クラスBの単体テストでしか反映されません(Aのテストでは実クラスBを使用しませんが、モックです固定入力と出力)。 ユニットテストで、気づいていないバグを早期に知らせることができませんでしたか?私は変化しているクラスのバグを認識しています。ユニットテストは必要ありません。自分の変更の結果を忘れて、 "忘れられた"クラスのバグを引き起こすテストが必要です。ユニットテストで可能です。または私は間違っていますか?
2) メソッドを呼び出す際のモックと適切な期待、それらの入力と戻り値を書くときには、テスト対象のクラスがどのように実装されるのかを知る必要があります。 それはテスト駆動開発と矛盾すると私は思う。 TDDでは、まずテストを書いて、それによって駆動され、コードを書きます。 しかし、テストしなければならないコードを書かない限り、私は正しい期待(一般的なテスト)を書くことができません。これはTDDと矛盾しますね。
モックの代わりに実際のオブジェクトを使用すると、これらの問題はどちらも解決できます。しかし、それは単体テストではありません、そうですか?単体テストでは、テスト中のクラスはシステムの残りの部分から分離されなければならず、実際のクラスを使用せずにモックされなければなりません。
私はどこかに間違っていると確信していますが、どこに見つけることができません。私は読んで読んでいて、私が間違って理解しているものは見つけられません。
関連:http://stackoverflow.com/questions/286587/are-you-really-using-unit-tests – Thilo