我们正在尝试学习AEM应用程序的单元测试框架。AEM应用程序的模拟
我们通过一些文件走了 - ResourceResolver模拟 - 吊带嘲笑 - JCR嘲笑 - OSGI模拟 - AEM嘲笑 但没有得到那清晰的了解,如果有人有它的专业知识,请就分享一些代码演示了上述议题
感谢, 马哈詹称为Gunesh
我们正在尝试学习AEM应用程序的单元测试框架。AEM应用程序的模拟
我们通过一些文件走了 - ResourceResolver模拟 - 吊带嘲笑 - JCR嘲笑 - OSGI模拟 - AEM嘲笑 但没有得到那清晰的了解,如果有人有它的专业知识,请就分享一些代码演示了上述议题
感谢, 马哈詹称为Gunesh
在单元测试中,我们没有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的信息。
请参考以下链接,了解更多有关嘲讽:
对于许多测试吊索嘲笑是一个非常强大的工具。 –
直到现在还没有真正使用Sling Mocks。将检查出来。 –
这个问题不够具体。您可以预定专家为您提供关于测试的广泛会话。 https://sling.apache.org/documentation/development/sling-mock.html几乎总结了一切。 –