2

私はまだ OOP を学んでおり、毎日何か異質なものを発見しています。そのため、単体テストを作成するときは、関数名と一般的なプログラム設計が既に定義されているのが一般的のようです。たとえば、「このファクトリまたはその依存関係コンテナーをテストして、期待どおりに機能するかどうかを確認します」。

学習者として、関数名からコードの構造、関数自体の動作まで、多くのことを時間の経過とともに変更したいと思うでしょう。明らかに、これはテストを書き直して合格することを意味します。この問題に直面しましたか?私が読んだいくつかのことは、一度書かれたテストに触れることはタブーであると語っていますが、どうすればこれを解決できますか?

4

4 に答える 4

7

一度書かれたテストに触れるのはタブーです

もちろん、これはまったくナンセンスです。時間が経ち、物事が変化し、コードが進化し、テストに触れる必要があります。テストを自由に修正して書き直してください。ただし、プロセスで誤って機能が失われないように注意してください(書き直されたバージョンが以前のバージョンのテストケースをテストしない場合)。

私にとって、この問題は単に存在しません。

于 2012-12-11T18:44:42.223 に答える
2

覚えておくべき重要なことは、テストコードは本番コードと同じくらい重要であるということです。そうでない場合は、なぜそれを気にする必要があるのでしょうか。これを念頭に置いて、テストを維持およびリファクタリングすることは、本番コードを維持およびリファクタリングすることと同じくらい重要です。

とはいえ、知識が進歩し、最初のやり方が気に入らなかったという理由だけで、テストを書き直すことはお勧めしません。テストが価値のあるものをテストしていて、理解できて、常に合格しているなら、私はそれを放っておくでしょう。

于 2012-12-11T19:44:14.837 に答える
2

@Sergioが言ったように、もちろん、テスト対象のクラスが変更された場合はテストを変更する必要があります。

一般的なテストの変更について注意してください。テスト中のクラスが間違っている場合、新しいテストが実際に失敗することを確認することを忘れないでください。新しいコードを作成して最初にテストを作成すると、新しい機能を実装してテストに合格する前に、テストが失敗することがわかります (TDD の「赤/緑」のリズム)。テストを変更するときは、常にパスするテストを作成していないことを確認する必要があります。

テスト対象のクラス (名前、動作) に関する変更についての質問については、テスト優先の方法でも簡単に行うことができます。

  1. テスト対象のクラスに加えたい変更を反映するようにテストを変更します
  2. テストを実行して、失敗することを確認します (または、名前が変更された場合はコンパイルされない可能性があります) [赤]
  3. クラスを更新し、テスト パスを確認します [緑]
于 2012-12-11T19:08:47.640 に答える
1

これはあなたのプログラムに依存すると思います。非常に巨大なプログラムがある場合、他の関数がその関数を使用しているかどうかわからない場合は、テストを書き直さないでください。開発中の場合、問題がないことが確実であれば、変更できます。

于 2012-12-11T18:44:47.620 に答える