2012-04-13 15 views
-3

私はWorking effectivly with Legacy codeという本を読んだ。テストのために静的メソッドを避ける必要がありますか?

私はレガシーコード

に依存関係を壊すためにテクニクスを理解しかし、私は初めてこれらの依存関係を避ける方法を理解したい:静的メソッドについて

の1-:

私はIntroduce Instance Delegatorを理解します

しかし、静的メソッドを使用しないようにする必要がありますか?

(コードのいくつかの作品のために、それだけではなく、マクロ。

それはいくつかの本当のロジックを持っており、それは、インスタンスに依存しないのです意味?)

2 - グローバル変数

私はIntroduce Static Setter

を理解します

シングルトンをもう一度避けるべきですか?

+0

私はあなたの質問を完全に理解していませんが、私はこれらのことをまったく避けないように答えるでしょう。 なぜ静的メソッドをテストするのが難しいと思いますか? –

+0

レガシーコードで作業したい場合は、避けることはできません。そのため、**従来の**コードと呼ばれています。今は、それほど大きなC#の狂信者ではありません。しかし、私はC#をレガシーコード(まだ)として分類しません。 –

+0

@Luis Filipeテスト中にこのメソッドをモックするのは難しい(抽出と上書きとして) –

答えて

0

ユニットテストの世界における静的メソッドの批判は、伝統的に、それらを嘲笑するのが難しいです。私は静的な方法を避ける理由としてこれに同意したことはありません(誰もがIOCコンテナを使用する贅沢を持っているわけではありません)。

JustMockのような静的クラスをモックするツールがあります。

シングルトンをモックするためのもう1つの方法は、プライベートアクセスまたはストレートリフレクションを使用して、ユニットテスト中にシングルトンにインターフェイスを返し、シングルトンにインスタンスをモックアウトさせることです。

関連する問題