Инициализация конфигурации в модульном тесте - PullRequest
0 голосов
/ 30 января 2019

У меня возникли некоторые проблемы с инициализацией в модульном тесте.Я застрял с этой проблемой на некоторое время.

У меня есть класс 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 ();

Есть предложения по этому поводу?

1 Ответ

0 голосов
/ 30 января 2019

Вы можете создать static метод для инициализации Configuration и аннотировать этот метод с помощью @BeforeClass.Такой метод будет выполнен перед всеми методами в вашем тестовом классе.

...