Expand my Community achievements bar.

Junit for getting Configuration through Bundle Context

Avatar

Level 2

I am trying to write Junit using Junit5

 

@Mock
ProcessingComponentConfiguration config;

@Mock
FrameworkUtil framework;

@BeforeEach
void setup() {
MockitoAnnotations.initMocks(this);
}

@Mock
ConfigurationAdmin configAdmin;

@Mock
ProcessingContext context;

@Mock
BundleContext bundleContext;

@Mock
SlingHttpServletRequest request;

@test
void testInit() throws IOException {
Mockito.when(context.getRequest()).thenReturn(request);
Mockito.when( request.getServerName()).thenReturn("server");
Mockito.when(framework.getBundle(Test.class).getBundleContext()).thenReturn(bundleContext);

}

 

It is giving null pointer exception when I inspect framework.getBundle(Test.class).getBundleContext().

 

How to write Junit for this. Below is my code.

 

BundleContext bundleContext = FrameworkUtil.getBundle(Test.class).getBundleContext();
ServiceReference slingSettingRef = bundleContext.getServiceReference(SlingSettingsService.class.getName());
SlingSettingsService slingSetting = (SlingSettingsService) bundleContext.getService(slingSettingRef);
ServiceReference factoryRef = bundleContext.getServiceReference(ConfigurationAdmin.class.getName());
ConfigurationAdmin configAdmin = (ConfigurationAdmin) bundleContext.getService(factoryRef);

3 Replies

Avatar

Employee Advisor

I recommend you to use the AEM Mocks library; it provides you mock implementations for the OSGI basics and there you can create tests much more easily and convenient.

 

I wrote some blog posts about it, you can find them here: https://cqdump.joerghoh.de/tag/unittest/

Avatar

Level 1

Hi @Jörg_Hoh 
If we don't want to change the original codebase is there still any way to mock Bundle Context?

 

Avatar

Level 1

@gazzalm54335496  Did you find a fix for this problem?

page footer