Expand my Community achievements bar.

Radically easy to access on brand approved content for distribution and omnichannel performant delivery. AEM Assets Content Hub and Dynamic Media with OpenAPI capabilities is now GA.
SOLVED

need some lights for JUNIT test for ResourceResolverService Implementation class

Avatar

Level 3

Dear all,

I have one simple service implementation class called ResourceResolverServiceImpl and I want to write JUNIT test class for this. I am very new to this JUNIT test.

 

************************* ResourceResolverServiceImpl Class *********************

import test.contentadmin.core.service.ResourceResolverService;
import org.apache.sling.api.resource.LoginException;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.resource.ResourceResolverFactory;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;

import java.util.HashMap;
import java.util.Map;

@Component(service = ResourceResolverService.class, immediate = true)
public class ResourceResolverServiceImpl implements ResourceResolverService {

    private static final String SYSTEM_USER = "datawrite";

    @reference
    ResourceResolverFactory resourceResolverFactory;

    @Override
    public ResourceResolver getResourceResolver() throws LoginException {

        Map<String, Object> param = new HashMap<>();
        param.put(ResourceResolverFactory.SUBSERVICE, SYSTEM_USER);
        return resourceResolverFactory.getServiceResourceResolver(param);
    }
}

 

******************************** ResourceResolverService Class *********************

 

import org.apache.sling.api.resource.LoginException;
import org.apache.sling.api.resource.ResourceResolver;

public interface ResourceResolverService {
	public ResourceResolver getResourceResolver() throws LoginException;
}

 

Now I want to write the JUNIT for this...any good docs "or" video is there for this JUNIT ?

 

Please suggest.

 

Thanks & Regards

sub

1 Accepted Solution

Avatar

Correct answer by
Community Advisor

Hi @subnaik, You can mock ResourceResolverFactory using MockResourceResolverFactory.

 

private AemContext ctx = new AemContext(
    ResourceResolverType.RESOURCERESOLVER_MOCK);
private ResourceResolverServiceImpl resolverService;

@BeforeEach
void setUp() {
  ctx.registerService(
      ResourceResolverFactory.class, 
      new MockResourceResolverFactory());
  resolverService = ctx.registerInjectActivateService(
      new ResourceResolverServiceImpl());
}

 

Reference: https://experienceleaguecommunities.adobe.com/t5/adobe-experience-manager/how-to-register-resource-r... 

View solution in original post

1 Reply

Avatar

Correct answer by
Community Advisor

Hi @subnaik, You can mock ResourceResolverFactory using MockResourceResolverFactory.

 

private AemContext ctx = new AemContext(
    ResourceResolverType.RESOURCERESOLVER_MOCK);
private ResourceResolverServiceImpl resolverService;

@BeforeEach
void setUp() {
  ctx.registerService(
      ResourceResolverFactory.class, 
      new MockResourceResolverFactory());
  resolverService = ctx.registerInjectActivateService(
      new ResourceResolverServiceImpl());
}

 

Reference: https://experienceleaguecommunities.adobe.com/t5/adobe-experience-manager/how-to-register-resource-r...