У меня возникли некоторые проблемы с инициализацией в модульном тесте.Я застрял с этой проблемой на некоторое время.
У меня есть класс EventProcessor, и это единственный класс.В конструкторе я вызываю метод, который читает файл конфигурации.
public class EventProcessor{
// SingletonHolder is a container class to hold singleton instance
private static final SingletonHolder<EventProcessor> m_EventProcessor = new SingletonHodler<>(new EventProcessor());
private EventProcessor() {
Client client = ClientBuilder.newClient();
String scheme = requiredHttps() ? "https" : "http";
m_webTarget = client.target(scheme + ....);
}
// this method will get the singleton instance of this class
public static EventProcessor getAuditEventProcessor() {
return m_EventProcessor.instance();
}
protected boolean requiredHttps() {
// Configuration class is also a singleton and getConfig() is a static method
//getSettings() will get key-value pair in the config file
Map map = Configuration.getConfig().getSettings();
//do some check with the value in the map
}
}
Так что, когда я запускаю весь проект, другой класс инициализирует класс конфигурации, и я могу прочитать файл конфигурации с помощью requiredHttps ().Все отлично работаетНо проблема в том, что когда я пишу модульный тест, класс конфигурации не может быть инициализирован.Поэтому, когда я делаю что-то вроде EventProcessor.getAuditEventProcessor () в тестовом классе и получаю ExceptionInInitializerError, я не могу инициализировать класс EventProcessor из-за получения исключения NullPointerException из Configuration.getConfig (). GetSettings ();
Есть предложения по этому поводу?