それは、テスト中のクラスで作成されたサービスを模擬することは可能ですか?

アーサー・ウィング:

私は、このクラスを作成する方法を制御不能だ、それはMavenのプラグインですので、しかし、モックSomeServiceにできるようにしたいと思います。私は、コンストラクタで、または他の場所で使用することはできませんので、手動でSomeServiceを作成する必要があります。テストでは、私はSomeServiceを模擬することができます-それはで作成された新しいインスタンスで置き換えることになるexecute()方法。それはPowerMockitoを使用するよりも、他の方法でこのサービスを模擬することが可能です?

@Mojo(name = "hellomojo")
    public class HelloMojo extends AbstractMojo {    

     private SomeService service;    

     @Override
     public void execute() throws MojoExecutionException {     
        service = createService();
     }

     private SomeService createService() {
           return new SomeService(parameter);
     }
    }
アーサー・ウィング:

この問題への私の最終的な解決策は以下の通りです。以下のような別のクラスにまず第一に、私が抽出してきたサービスの作成:

public class ServiceProvider {

    public SomeService createService() {
        return new SomeService();
    }
}

その後、私のHelloMojoに私は2つのコンストラクタ、デフォルトの用途のコンストラクタセットSomeServiceを作成しました。最後に私のHelloMojoクラスは、次のようになります。

    @Mojo(name = "hellomojo")
    public class HelloMojo extends AbstractMojo {    

     private SomeService service;  

    public HelloMojo(){
       this(new SomeService())      
    }   

    public HelloMojo(SomeService someService){
       this.service=someService;
    }   

     @Override
     public void execute() throws MojoExecutionException {     
        service.doSomething
     }             
    }

だから、私はいくつかの依存性注入をしたしました

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=212860&siteId=1