2012-01-27 20 views
2

JUnit 4.8.1(およびMaven 3.0.3)でJava 6を使用しています。特定のJUnitテストでは、いくつかのテストが依存しているクラス(com.myco.clearing.product.server.cacheとして認定されています)を、このクラスの独自のバージョン(同じパブリックメソッドシグネチャを持ちます) 。これを行うためのエレガントな方法は何ですか?いくつかのJUnitテストを実行する際に、どのクラスを置き換えるのですか?

JUnitテストの中には、com.myco.clearing.product.server.cache.Cacheクラスを直接呼び出すのではなく、このクラスに依存するクラスを呼び出すものがあります。これらの間接的なケースでも、クラスの私のバージョンを使用したいと思います。これらの線に沿って任意の助け

おかげで、 - デイブ

+0

お待ちください、あなたの_tests_はキャッシュに依存していますか?または、テスト対象のユニットがキャッシュに依存するユニットですか? (私はキャッシュが単なる例であることを知っています) –

答えて

2

ここでやって正確に何を言うのは難しいですが、一般的には:

  1. いくつかのIoC技術を使用して - コンストラクタ、セッターを注入。

  2. モックフレームワークを使用してオブジェクトをモックすると、私は モッキートをお勧めします。だから、

、たとえば、あなたがのはFooそれを呼びましょうcom.myco.clearing.product.server.cache.Cache使用するクラスを持っている場合。そして、あなたはこのようになりました使用:次にあなたがCacheクラスの嘲笑のバージョンで注入することができるかもしれ

class Foo { 
    private Cache _cache; 

    public Foo(Cache cache) { 
     _cache = cache; 
    } 

    public Foo() { 
     this(new Cache()); 
    } 
} 

:可能であれば

class Foo { 
private Cache _cache = new Cache(...); 
} 

、このようなものに変更します。 Cacheクラスに依存しているので、「できるかもしれない」と言います。それが最終的な場合は、静的メソッドの束など、あなたはより対処する必要があります。

関連する問題