我有以下服务方法,我正在进行 Junit 测试。 SUT 类具有对 ResourceResolverFactory 服务的 @Reference。当我启动 SUT 类时,resourceResolverFactory 始终为 null,这会导致在执行 try block 中的第一行时抛出 NullPointerException: ResourceResolver = resourceResolverFactory.getAdministrativeResourceResolver(null);
@Reference
ResourceResolverFactory resourceResolverFactory;
@Override
public PropertyStatusInfo getPropertyStatusInfo(String hotelCode,
String brandCode) {
LOGGER.info( "Class : " + this.getClass().getName()
+ " : Method : getPropertyStatusInfo() : [ENTER]");
LOGGER.debug( "Input Parameters : Hotel Code - "
+ hotelCode + " BrandCode - " + brandCode);
ResourceResolver resourceResolver;
Session session = null;
try {
resourceResolver = resourceResolverFactory.
getAdministrativeResourceResolver(null);
...
}
}
有什么建议吗?谢谢!
最佳答案
听起来工厂的实例没有被注入(inject)到您的测试代码中。
您可以使用反射将 resourceResolverFactory
字段设置为某个值,value
:
Field field = SUT.class.getDeclaredField("resourceResolverFactory");
field.setAccessible(true);
field.set(instanceOfSutClass, value);
关于java - 单元测试 OSGi 服务,该服务引用了另一个服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37106229/