2015-06-10 94 views
1

鑑於代碼:吊帶模擬是不允許讓ResourceResolverFactory

public class TestExample { 
    @Rule 
    SlingContext slingContext = new SlingContext(ResourceResolverType.JCR_MOCK); 


    @Test 
    public void test() { 
    ResourceResolverFactory rrf = slingContext.getService(ResourceResolverFactory.class); 
    } 
} 

給我:

org.apache.sling.resourceresolver.impl.ResourceResolverFactoryActivator$1 cannot be cast to org.apache.sling.api.resource.ResourceResolverFactory 
java.lang.ClassCastException 
    at example(ExampleTest.java:21) 

我一定要使用slingContext.resourceResolver()方法?它不像我想要的那樣靈活,因爲一次只存在ResourceResolver實例(並且它在我的班級自己正在做的tearDown上關閉)。我能否以某種方式避免這個問題?

回答

0

下面的代碼使用以下依存

<dependency> 
    <groupId>org.apache.sling</groupId> 
    <artifactId>org.apache.sling.testing.osgi-mock</artifactId> 
    <version>1.3.0</version> 
    <scope>test</scope> 
</dependency> 
<dependency> 
    <groupId>org.apache.sling</groupId> 
    <artifactId>org.apache.sling.testing.jcr-mock</artifactId> 
    <version>1.1.6</version> 
    <scope>test</scope> 
</dependency> 
<dependency> 
    <groupId>org.apache.sling</groupId> 
    <artifactId>org.apache.sling.testing.sling-mock</artifactId> 
    <version>1.3.0</version> 
    <scope>test</scope> 
</dependency> 

您正在使用什麼吊帶嘲笑的版本爲我工作

public class RRFTest { 

    @Rule 
    public final SlingContext slingContext = new SlingContext(ResourceResolverType.JCR_MOCK); 

    @Test 
    public void readRootWithRRF() throws LoginException { 
     ResourceResolverFactory rrf = slingContext.getService(ResourceResolverFactory.class); 
     ResourceResolver resolver = rrf.getAdministrativeResourceResolver(null); 

     Resource resource = resolver.getResource("/"); 

     Assert.assertNotNull(resource); 
    } 
}