首页 > 解决方案 > 如何在我的异常类中模拟一个类?

问题描述

我必须在 MyException 类中访问 ApplicationContext

public class MyException extends Exception {
    public MyException(Map<String, Map<String,String>> errorObj) throws IOException {
            ApplicationContext applicationContext = ApplicationContextProvider.getApplicationContext();
            Environment env = applicationContext.getEnvironment();
            ...
    }
}

而这项服务抛出它。

 @Service
 public class MyServiceImpl implements MyService {

    @Override
    public Response myFunction() {

          throw new MyException(errorObj);
       ...
    }
 }

编辑这是 ApplicationContextProvider

public class ApplicationContextProvider implements ApplicationContextAware {

    private static ApplicationContext context;

    public static ApplicationContext getApplicationContext(){
        return context;
    }

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        context = applicationContext;
    }
}

当我运行 unittest 时,我在 ApplicationContext 上得到了 NullPointerException。我想模拟 ApplicationContext 怎么做?

我发现这个错误只是单元测试,但是当我使用 spring-boot:run 运行时它工作正常

标签: spring-bootunit-testingmockito

解决方案


您可以在测试类中使用SpringBootTest注释,它创建一个包含测试所需的所有对象的应用程序内容。


推荐阅读