4

Business クラスのテストを行いたいのですが、この問題があります。モッキング オブジェクトの 1 つが、Sites、URL、ComplexObject などの他のクラスに多くの依存関係を持っています。

私の質問は、テストする必要があるメソッドでモックオブジェクトのこのメソッドを使用する必要がある場合、どうすればクラスを分離できますか? それらすべてをモックして、モックされたオブジェクトに追加する必要がありますか?

4

2 に答える 2

4

他にどのようにそれをテストできますか?依存関係をモックする必要があるようです。良い面の1つは、テストが必要な他のクラスでモックを使用できる可能性が高いことです。これは明確なコードの臭いであることに注意してください。

依存性注入について考えたことはありますか?すべての依存関係を渡した場合は、一連のテスト依存関係を生成するファクトリを作成し、テストに必要な依存関係だけをオーバーライドできます。

于 2011-01-28T17:53:57.047 に答える
0

私がやりたいことは、すべての外部依存関係と静的メソッドへのフィールドを持つクラスを作成することです。例えば:

public class DanceMakerDependecies{
    private URL url;

    public String getCurrentUser(){ // not static, so very easy to test
        return UserManager.currentUser().getName();
    }

    //getter and setters
}

public class DanceMaker{
     public DanceMaker(DanceMakerDependecies dep){
     ..
     }
     // you could also create default constructor with the default dependencies
}

public class DanceMakerTest{
    @Test
    void dance(){
        DanceMaker dm = new DanceMaker();
        dm.setDependecies(EasyMock.createMock(DanceMakerDependecies.class));
        //etc.
    }
}

純粋主義者がすべてをクラスに注入することを好むことはわかっていますが、この方法でテストする方がはるかに簡単だと思います。試してみて、それについてどう思うか見てみましょう (ベストプラクティスやデザインパターンではないに違いありませんが、気に入っています)。

于 2011-01-28T18:53:22.797 に答える