我想在Pax考试中测试我的OSGI应用程序,但是从我的一个插件启动应用程序时遇到了一些麻烦。
我使用Equinox,并且有一些特定于equinox的类扩展了org.eclipse.equinox.app.IApplication。然后可以在Eclipse Application Launcher中选择该类,这是第一个要运行的类(在我的例子中,它控制应用程序生命周期)。
当我运行Pax Exam测试时,所有捆绑包都已解析,但我的IApplication未启动。
如何在Pax考试中运行此类应用程序?
另外,我如何传递一些应用程序参数?我只看到一些frameworkProperty(-F)和systemProperty(-D),但我需要一些常规的app参数。
答案 0 :(得分:0)
据我所知,IApplication不是昼夜平分点的一部分,而是日食平台的一部分。所以我认为pax考试不直接支持它。 Pax考试只会启动OSGi框架并加载并启动您指定的软件包。
因此,实现这项工作的方法可能是加载负责应用程序启动的eclipse包。我不确定这会如何发挥作用。
使用eclipse特定的东西时,你的应用程序便于移植。那么也许你可以用纯OSGi基础设施实现同样的目标呢?
或者您要测试eclipse RCP应用程序的应用程序是什么?在这种情况下,pax考试可能不是最好的考试设施。在这种情况下,一些UI测试框架会更好地匹配。 (例如https://developers.google.com/java-dev-tools/wintester/html/)
答案 1 :(得分:0)
IApplication是Equinox的一部分,并使用注册表找出安装的内容。因此,除了在PAX中包含适当的jar之外,您还需要确保至少启动声明性服务和扩展注册表包,否则将无法找到IApplication内容。
其次,没有调用EclipseStarter类的bundle,它处理主要参数,并将其传递给运行时。因此,除非您自己这样做,否则您会发现应用程序根本无法运行。
如果你专门启动Eclipse,你可能会发现一些特定于Eclipse的参数,将它们指定为Java系统属性:
例如,您可以指定-Dapplication.id = yourapp您也可以尝试将eclipse.commands作为以换行符分隔的参数列表。