Junit5 Mockito for Acitvate method

Avatar

Avatar

baw_gov

Avatar

baw_gov

baw_gov

23-03-2021

I have an activate method in service implementation class that is using OSGI configuration. I am looking for how to write Junit5 Test Cases for Activate method.

Accepted Solutions (1)

Accepted Solutions (1)

Avatar

Avatar

koenve

Avatar

koenve

koenve

23-03-2021

As pointed out by @Jörg_Hoh , there's an even better way of doing it! 

 

Create a map with the properties you want to pass to your service

Map<String,Object> parameters = new HashMap<>();
parameters.put("my_property","my property");

You can then pass this to your context with the registerInjectActivateService method:

context.registerInjectActivateService(myService, parameters);

 

_____________________________________

Original answer:

What you can do is create a mock-implementation of your OSGI configuration interface.

 

private static class MockConfig implements MyService.Configuration {
        
        public String my_property() {
            return "my property";
        }

        
        public Class<? extends Annotation> annotationType() {
            throw new NotImplementedException();
        }
    }

 

You can then pass this to your unit test, so you can test that whatever needs to happen, happens:

 

void test_activate() throws Exception{
    myService.activate(new MockConfig());
    assertEquals("my property", myService.getMyProperty());
}

 

 

Answers (1)

Answers (1)

Avatar

Avatar

Jörg_Hoh

Employee

Total Posts

3.1K

Likes

1.0K

Correct Reply

1.1K

Avatar

Jörg_Hoh

Employee

Total Posts

3.1K

Likes

1.0K

Correct Reply

1.1K
Jörg_Hoh
Employee

25-03-2021

You can get that done much easier if you are using SlingMocks. I have written a blog post about exactly the case you have: https://cqdump.joerghoh.de/2019/01/09/writing-unit-tests-for-aem-using-slingmocks/