3

次の条件が与えられます。

  • テストカバレッジがまったくない、非常に古くて大きなC#レガシーコードベース
  • (ほぼ)すべてのクラスは何らかのインターフェースから派生しています
  • 何も封印されていない

Extract&override +(RhinoMocksなど)を使用する場合と比較して、JustMockやTypeMockなどのプロファイラーAPI駆動型ソリューションを使用することの実際的な利点は何ですか?TypeMock / JustMockなどを使用する必要がある場合、プライベート/保護を回避する以外に、私が気付いていないケースはありますか?特に、いずれかの製品に切り替えた方のご経験をお待ちしております。

extract&overrideを使用すると、古いレガシーコードを処理する際のすべての問題が解決されるようであり、リファクタリングは非常に単純であり、バグが発生する可能性は非常に小さいようです。より少ないテストコードを書くことの利点はありますか?仮想保護されたものが少ない、より美しいクラス?パブリックメソッドはそのような古いレガシーコードベースの内部では大きすぎる可能性があるため、最初にプライベートメソッドを分離してテストすることは非常に役立つことを理解していますが、現時点では「取得」していません。

抽出とオーバーライドが何であるかわからない場合:ここを参照してください。

4

1 に答える 1

3

フレームワークが構築されたテクノロジーを考慮しないフレームワークの間には多くの違いがあります。

例えば:

  • API-すべてのフレームワークには異なる表記法とデフォルトがあります(たとえば、厳密なデフォルトと緩和されたデフォルト)
  • サポート-適切なフレームワークは通常、ライセンスによるサポートを提供します
  • 価格-これは使用法の問題ではありませんが、予算が必要です

Extract&Overrideの主な利点は、リファクタリングが必要なことです。作業中のコードを無視すると、テスト容易性だけでなく、より良いコードに向けてリファクタリングする良い機会が得られます。

Isolationフレームワークを使用する主な利点は、テスト対象のコードを変更する必要がないことです(コードベースが大きい場合は、テスト容易性のためにリファクタリングするだけでも時間がかかる可能性があります)。さらに、Isolationフレームワークは、特定の設計を強制するものではありません。これは、レガシーコードが既存の設計とよりよく一致する場合に役立つ可能性があります。レガシーコードで役立つもう1つの機能は、テスト対象のコードで作成されたインスタンスを交換することです。通常、インスタンス化のリファクタリングにはより多くの労力がかかり、これを節約できます。最後に、サードパーティのコードを偽造します。分離フレームワークを使用すると、ラッパークラスを使用せずに自分のものではないコードを分離できます。

免責事項-私はTypemockで働いています

于 2011-08-18T07:50:30.587 に答える