2011-10-28 1 views
1

パブリックメソッドのセットを持つMyClassというクラスがある場合は、 MethodA、MethodBおよびMethodC。そして、あなたは唯一たとえば、MyClassのから単一の方法を必要とするアプリケーションのいくつかの場所で:ラスタとしての静的メソッド

MyClass myClass = new MyClass(); 
myClass.MethodA(); 

私はコード化された上記の行を折り返し単一の静的メソッドを作成したいと思います上記を簡単にするために。私はMethodAに対する単体テストを書くつもりです。私の単体テストでは、MethodAは模擬フレームワークを使って実装されたインタフェースとやりとりします(これはInversion of Controlと呼ばれています)。

MethodAをテストすることによって、静的メソッド(ラッパーメソッド)も間接的にテストされていると想定するのは安全ですか?私はMethodAで使用されているインタフェースの実際の実装もテストされていると仮定しています。

また、静的メソッドを実装してはいけませんか?

答えて

0

しないでください!

あなたがしたいように使用される静的メソッドは、コントロール/依存性注入の逆転とはまったく反対です。したがって、悪い習慣です。 あなたがしたいのは、コンストラクタまたはセッターを介して手動で、またはSpringのようなIoCフレームワークを使用して注入されるかのいずれかで、インターフェイスにMyClassが必要なすべてのクラスに注入することです。

別のクラスから呼び出す静的メソッドでコード行をラップすると、具体的な実装はMyClassであまりにも厳密に結合されますが、これは達成したいと反対です。

しかし、より具体的な質問に答えるには、はありません実際にそうでない限り、コードは別のテストでテストされていると想定するのが安全です。私が意味することは:静的メソッドを通過するテストがない場合、それはカバーされていません。たとえそれが簡単ではないと思っても、後でリファクタリングされる可能性があることを忘れないでください。

0

いいえ、ラッパーメソッドもテストされていると想定するのは安全ではありません。ラッパーメソッドにはコードがあり、そのコードには欠陥がある可能性があるため、そのコードに対して単体テストを書く必要があります。

関連する問題