2016-10-27 8 views
-3

古いプロジェクトにいくつかの新機能を追加します。レガシーコードの機能に頼ることなく、いくつかのクラスを単体テストできます。しかし、私は、機能の次の段階がちょうどそれが私が基本的にプロジェクトから(または少なくともセットアップのほとんど)メインを実行する必要があるように見えるレガシーコードに依存しているポイントになった私の最新のクラスをユニットテストすることができます。ユニットテストをしようとするとばかばかしい依存関係に対処するためのアプローチはありますか?私は機能 の次の段階は、私が は基本的に、少なくともほとんどのプロジェクトからの主(またはを実行する必要がありますようにそれはそうレガシーコードにちょうどそう依存しているポイントに得ているが多数の依存関係を持つユニットテストの正確さ

+0

Do not spam tags! Cは別の言語です。 – Olaf

+2

_多数の依存関係を持つUnit Testを正しく行う方法_ Refactor。 – erip

+0

私はタグをスパムしていません。私のプロジェクトのレガシーコードの多くはcです。しかし、このプロジェクトの新しい側面はC++で書かれています。また、リファクタリングはオプションではありません。 – nlsnyder

答えて

0

私の最新のクラスをユニットテストできるようにするには、 をセットアップしてください)。

私はこの種の問題に遭遇しました。あなたは4つの方法で小さなクラスを書くように求められます。

残念ながら、コードではレガシークラスのオブジェクトを作成する必要があります。したがって、レガシーコードのライブラリを構築し、コードをリンクし、3ダースのプロセスを実行し、データベースを立ち上げ、データベースにサンプルデータを埋め込み、プロセスの構成を設定し、キックインするイベントをスケジュールする必要があります。

あなたの入力を模倣することによって、その痛みの一部を避けることができます(私はすでにそれを行ったと仮定します)。

レガシークラスをスタブアウトすることもできます。コントロールにレガシークラスのソースコードがない場合は、レガシークラスのメソッドを選択的にスタブすることもできます(スタブライブラリを実際のレガシーライブラリよりも前にコンパイラのコマンドラインに置く)。

ユニットテストで発生するさまざまな種類の問題に対処するためのさまざまなトリックがあります。特定の問題を念頭に置いている場合は、それをあなたの質問に追加して、人々がより良い方法であなたを助けることができるようにします。

+0

ありがとう!あなたは私にいくつかのものを見せてくれました。 – nlsnyder

関連する問題