我希望能够模拟SomeService,但是,因为它是一个maven插件,所以我无法控制此类的创建方式。我需要手动创建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);
}
}
最佳答案
我最好的猜测是将createService()
方法包设为私有,并创建覆盖它的HelloMojoWrapperForTests
并始终返回模拟。但这只是为了测试而已,这似乎是一个巨大的解决方法...