0

このようなレガシーコードを「単体」テストする方法がまだわかりません...

私のコードのほとんどは、ツリーのように、内部に他の多くのオブジェクトを持つクラス A のオブジェクトに物を置いたり、物を削除したりすることです。このツリーのリーフには、OR マップされたデータベース行に基づくデータ項目オブジェクトがあります... classA の実オブジェクトを作成することは、このツリーのすべてのノードを作成する必要があるため、簡単ではありません。A 内の 1 レベルを超えたクラスを表示することさえできません。

classAobj が状態 X のときにコードを実行する必要があり、このコードは classAobj を状態 Y に移動します

classAobj を状態 X にする最良の方法は何でしょうか?

Mock オブジェクトと Stub オブジェクトが騒がしいと聞いたことがありますが、深い期待を持って何かを処理する方法と、すべてのツリーが必要な場合にスタブを作成する方法についてはわかりません。

classAobj が機能するために必要な他のオブジェクトをどのように見つけますか?

4

1 に答える 1

0

単体テスト用に設計されていないレガシー コードに単体テストを追加することは非常に困難であり、オブジェクト ツリー全体をリファクタリングするときに、しばらくして本当にジャンクしたいだけのテストを作成することになる可能性があります。

統合テストを作成することを検討します。これにより、リファクタリングの自由度が最も高くなりますが、セットアップに多大なコストがかかります。

于 2012-06-18T12:24:14.280 に答える