我在单元测试中遇到了一些麻烦。我被这个问题困扰了一段时间。
我有一个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
}
}
因此,当我启动整个项目时,另一个类将初始化Configuration类,并且可以使用requiredHttps()读取配置文件。一切正常。但是问题是当我编写单元测试时,无法初始化Configuration类。所以当我做类似的事情 测试类中的EventProcessor.getAuditEventProcessor()并获取ExceptionInInitializerError,由于从Configuration.getConfig()。getSettings()获得NullPointerException而无法初始化EventProcessor类。
有什么建议吗?
答案 0 :(得分:0)
您可以创建static
方法来初始化Configuration
并用@BeforeClass
注释该方法。这样的方法将在测试类中的所有方法之前执行。