Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing Liferay服务的单元测试_Unit Testing_Liferay_Osgi_Liferay 7_Liferay Service Builder - Fatal编程技术网

Unit testing Liferay服务的单元测试

Unit testing Liferay服务的单元测试,unit-testing,liferay,osgi,liferay-7,liferay-service-builder,Unit Testing,Liferay,Osgi,Liferay 7,Liferay Service Builder,我写了一封信 它做复杂的事情,根据输入有许多不同的预期输出。我想用所有这些输入测试输出 我的服务由多个portlet使用,因此我可以手动使用portlet进行测试,但是测试所有情况都需要几天的时间,我每周都要这样做。此外,使用当前Portlet无法访问某些输入 在我的服务的实现模块中,我创建了JUnit测试,但是它们失败了,因为它们找不到OSGi类: 现在我意识到,如果没有OSGi+Liferay基础设施来支持Liferay服务,让它能够访问其他服务和数据,Liferay服务就无法真正独立运行

我写了一封信

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

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

在我的服务的实现模块中,我创建了JUnit测试,但是它们失败了,因为它们找不到OSGi类:

现在我意识到,如果没有OSGi+Liferay基础设施来支持Liferay服务,让它能够访问其他服务和数据,Liferay服务就无法真正独立运行

因此,我可以在live Liferay实例中而不是在Eclipse中运行测试。我可以通过gogoshell命令、REST调用、即席portlet甚至模块激活来启动单元测试

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


注意:Liferay Portlet的单元测试包含在中。

我不是Liferay专家,但我可以描述此类测试的一般方法。 您需要以下步骤:

  • 构建您的模块
  • 将您的模块集成到liferay系统中
  • 将liferay系统与新捆绑包一起运行
  • 开始junit测试
  • 单元测试将与正在运行的系统交互(通常通过REST或soe其他远程接口)
  • 测试完成后,您希望销毁liferay实例
由于liferay是一个OSGi系统,集成步骤可能会在liferay通过上传捆绑包启动后进行

这可能会有帮助:


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

因此,为了更清楚地说明这一点。。我认为您所问的不是单元测试,而是集成或系统测试。(即使是用junit写的)@ChristianSchneider:是的,我想,很抱歉这么说!有很多测试,每一个都测试一个小的边缘案例,我希望它们能够一个接一个地自动执行。对于我来说,最终的结果应该是一种报告,说明所有测试都成功了(或者告诉我检查日志,因为一些测试失败了)。Junit通常是一个很好的工具,但是对于这样的更高级别的测试,您通常需要额外的工具。请看下面我的回答。@NicolasRaoul你写了什么样的liferay服务?直接osgi ds或服务生成器服务?service builder支持直接远程服务生成。。这就是为什么我asking@André:我是从头开始写的,但下次如果有帮助的话,我可以使用ServiceBuilder。我将问题标记为“liferay服务生成器”,因为没有“liferay服务”标记。您是否建议我编写一个远程服务,并通过通用REST测试工具测试远程服务?好主意!远程服务需要在一个单独的模块中,以便我在投入生产时可以删除该模块(让这些服务远程访问会带来安全风险)。请发布一个详细说明该策略的答案,谢谢:-)我同意,如果是api的话,有几种工具可用于此..如上所述。不过,liferay服务是一种复杂的测试场景。简单来说,可以将测试嵌入到一个包中,并使用激活阶段来启动测试。它不像IDE那样漂亮和干净,但是可以完成它。你甚至可以为你的跑步者单独吃一顿午餐,然后收集结果。这是一种可以用来测试xxxLocalService实例的非常简单的方法,因为在OSGi环境中,您的测试可以依赖于该组件来运行,从而保持有序。对于在相当简单的环境中进行的OSGi测试,我经常使用pax考试。但是,以这种方式设置liferay可能很困难。是否有其他选择?我担心需要通过Arquillian来启动Liferay实例,从而影响构建性能。