2017-03-20 43 views
-2

我们正在尝试学习AEM应用程序的单元测试框架。AEM应用程序的模拟

我们通过一些文件走了 - ResourceResolver模拟 - 吊带嘲笑 - JCR嘲笑 - OSGI模拟 - AEM嘲笑 但没有得到那清晰的了解,如果有人有它的专业知识,请就分享一些代码演示了上述议题

感谢, 马哈詹称为Gunesh

+1

这个问题不够具体。您可以预定专家为您提供关于测试的广泛会话。 https://sling.apache.org/documentation/development/sling-mock.html几乎总结了一切。 –

回答

1

在单元测试中,我们没有JCR和OSGi的对象。

例如, 如果您的代码包含搜索查询,那么您将需要访问javax.jcr.Session会话。您还需要一个ResourceResolver来获取资源。

代码会有点像:

ResourceResolver resourceResolver = resolverFactory.getResourceResolver(properties); 
Session session = resourceResolver.adaptTo(Session.class); 

所以在单元测试中,你将需要发送此类对象的模拟,因为你不能得到相同的实际版本。模拟只是一个虚拟对象,所以你不会在你的测试用例中得到一个空指针。使用模拟框架,如Mockito,JUnit,PowerMock等,您可以指定模拟方法调用的输出。

例如

@Mock 
ResourceResolver resourceResolver; 

@Mock 
Session session; 

@InjectMocks 
YourMainClass objectOfYourMainClass; 

然后使用whenThen语句指定测试中的预期行为。

when(mock.methodCall).thenReturn(expectedReturnObject);

例如

when(resourceResolver.adaptTo(Session.class)).thenReturn(session); 

PowerMock是一个框架,用于模拟不可能使用基本Mocking框架的类。例如静态类可以使用PowerMock来模拟。

您可以访问Powermock github链接了解关于PowerMock的信息。

请参考以下链接,了解更多有关嘲讽:

http://www.vogella.com/tutorials/Mockito/article.html

https://dzone.com/articles/getting-started-mocking-java

+0

对于许多测试吊索嘲笑是一个非常强大的工具。 –

+0

直到现在还没有真正使用Sling Mocks。将检查出来。 –