2009-07-30 10 views
1

私は同じことをやっていると信じている、はるかに単純な実装で、より複雑なメソッドを置き換えています。古いコードを使用して単体テストの結果を確認する

ユニットテストで古いコードをクラスにコピーして、両方の結果が同じであると主張できますか?

ありがとうございました

答えて

5

はい。それは良い方法です。

しかし、ここで停止しないでください。

また、以前のコードで使用されていた「最終回答」を持つテストを作成します。

ユニットテストの古いコードは間違って維持不能なので、ある時点で削除することをおすすめします。

+0

あなたのテストに古い大きなメソッドを残すことは意味がありません。 – Ryu

+0

保守をして、新しいものと一致するようにユニットテストの出力を修正する必要があるのはもちろんです要件。書き直しの全体的なポイントは、古いソフトウェアを取り除くことでした。 TestCaseには入れません。 –

1

また、テストで両方のメソッドが同じ値を返すようにすることもできます。何かのように

その後、古い方法からゆっくりと自分自身を自由にすることができます。

4

あなたがソースコントロールを使用していると仮定すると、ここで私がやるだろうと何:

  1. は古いコードのテストを書きます。
  2. テストに合格することを確認してください。
  3. ソースコントロールにチェックインします。
  4. は今、 別々の変化として、 実装を置き換える(すなわち:新しい 実装を追加し、古い 実装を削除)して テストはまだ合格していることを確認します。ステップ1の一環として

あなた、あなたの主な目標は、単に既存の動作を維持するためであれば、それは出してくれるものを値見ることができるように、古いコードのために少し「ハーネス」を書きたいことがあります。重要なことは、古い実装を渡すテストがあることです。

手順3の理由は、重要なケースを見逃したことが判明した場合は、古いコードに対してテストを送信した変更に同期して、新しいテストを追加し、動作していることを確認してから、それがまだ機能していることを確認してください(必要に応じて新しい実装を修正してください)。

2

間違いなく。古いコードが処理するケース、境界条件、エラーなどのそれぞれをカバーするテストが必要です。テストがうまくいけば、新しいコードはテストが合格すると同等です。

古いコードを確実にリファクタリングして削除できることは、単体テストの大きな利点の1つです。

2

それは、あなたの新しいコードと古いコードを交換し、それを確認するテストを最初

を書いて、古いコードはそれを

を書き換える前にそれらを渡すことを確認してください

に理にかなって同じテストに合格する

関連する問題