Liferay服务的单元测试

时间:2019-07-18 08:22:44

标签: unit-testing liferay osgi liferay-7 liferay-service-builder

我写了Liferay service

根据输入,它会以许多不同的预期输出来完成复杂的事情。我想用所有这些输入来测试输出。

我的服务由多个Portlet使用,因此我可以使用Portlet进行手动测试,但是测试所有情况都需要花费几天的时间,因此我必须每周进行一次测试。此外,使用当前的portlet无法访问某些输入。

在我的服务的实现模块中,我创建了JUnit测试,但由于找不到OSGi类而导致测试失败:

enter image description here

现在,我意识到,如果没有OSGi + Liferay基础结构来支持Liferay服务,并使其能够访问其他服务和数据,那么Liferay服务就无法真正独立生存。

因此,我可以在一个活动的Liferay实例中而不是在Eclipse中运行测试。我可以通过Gogo Shell命令,REST调用,临时Portlet甚至在模块激活时启动单元测试。

问题:如何为Liferay服务实施此类“单元”测试?

注:another question涵盖了Liferay Portlet的单元测试。

1 个答案:

答案 0 :(得分:1)

我不是liferay专家,但是我可以描述这种测试的一般方法。 您需要执行以下步骤:

  • 构建您的模块
  • 将您的模块集成到liferay系统中
  • 与新捆绑包一起运行liferay系统
  • 开始进行junit测试
  • 您的单元测试将与正在运行的系统交互(通常通过REST或其他远程接口)
  • 测试完成后,您要销毁liferay实例

由于liferay是OSGi系统,因此可能会通过上载捆绑软件在liferay启动后进行集成步骤。

这可能会有所帮助:

如果您可以将liferay作为docker映像启动,那么TestContainers项目可能会有所帮助。它负责以安全的方式从java junit代码启动和停止docker容器。例如,即使测试崩溃,它也可以确保容器始终被清理干净。