Как издеваться над классом в моем классе исключений? - PullRequest
0 голосов
/ 10 октября 2019

Мне нужно получить доступ к ApplicationContext в классе MyException

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 Я получил NullPointerException на ApplicationContext. Я хочу издеваться над ApplicationContext Как это сделать?

Я обнаружил эту ошибку только в модульном тестировании, но когда я запускаю с подпружиненной загрузкой: запустите его нормально

1 Ответ

0 голосов
/ 10 октября 2019

Вы можете использовать SpringBootTest аннотацию в классе теста, который создает контекст приложения, содержащий все объекты, необходимые для теста.

...