我希望能够模拟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并始终返回模拟。但这只是为了测试而已,这似乎是一个巨大的解决方法...

10-06 01:58