アーサー・ウィング:
私は、このクラスを作成する方法を制御不能だ、それは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
}
}
だから、私はいくつかの依存性注入をしたしました