我写了Liferay service。
根据输入,它会以许多不同的预期输出来完成复杂的事情。我想用所有这些输入来测试输出。
我的服务由多个Portlet使用,因此我可以使用Portlet进行手动测试,但是测试所有情况都需要花费几天的时间,因此我必须每周进行一次测试。此外,使用当前的portlet无法访问某些输入。
在我的服务的实现模块中,我创建了JUnit测试,但由于找不到OSGi类而导致测试失败:
现在,我意识到,如果没有OSGi + Liferay基础结构来支持Liferay服务,并使其能够访问其他服务和数据,那么Liferay服务就无法真正独立生存。
因此,我可以在一个活动的Liferay实例中而不是在Eclipse中运行测试。我可以通过Gogo Shell命令,REST调用,临时Portlet甚至在模块激活时启动单元测试。
问题:如何为Liferay服务实施此类“单元”测试?
注:another question涵盖了Liferay Portlet的单元测试。
答案 0 :(得分:1)
我不是liferay专家,但是我可以描述这种测试的一般方法。 您需要执行以下步骤:
由于liferay是OSGi系统,因此可能会通过上载捆绑软件在liferay启动后进行集成步骤。
这可能会有所帮助:
如果您可以将liferay作为docker映像启动,那么TestContainers项目可能会有所帮助。它负责以安全的方式从java junit代码启动和停止docker容器。例如,即使测试崩溃,它也可以确保容器始终被清理干净。