0

Component.getInstance(Needed.class)Seam コンポーネントではないクラスの 1 つのコンストラクターを呼び出しています。それは問題なく動作しますが、単体テストでカバーしようとしており、取得IllegalStateExceptionしているのは上記の行にあります。Component.getInstance をテストでカバーする方法はありますか?

ところで、私は unitils ライブラリを使用しています...よろしくお願いします

4

1 に答える 1

1

クラスでService Locator パターンを使用していますが、これは単体テストには適していません。Dependency Injection パターンに移行してみてください。これにより、単体テストがはるかに簡単になります。

サービス ロケーターの例:

public class MyService : Service
{
    private Needed dependency;

    public MyService()
    {
        this.dependency = 
            Component.getInstance(Needed.class);
    }
}

依存性注入の例:

public class MyService : Service
{
    private Needed dependency;

    public MyService(Needed dependency)
    {
        this.dependency = dependency;
    }
}

依存性注入を行う場合、クラスはコンテナーへの参照を持たないため (Componentこの場合)、クラスの単体テストがはるかに簡単になります。

于 2011-03-11T10:11:25.510 に答える