0

我想在 Pax Exam 中测试我的 OSGI 应用程序,但是从我的插件之一启动应用程序时遇到了一些问题。

我使用 Equinox,并且有一些特定于 Equinox 的类扩展了 org.eclipse.equinox.app.IApplication。然后可以在 Eclipse Application Launcher 中选择此类,并且是要运行的第一个类(在我的情况下,它控制应用程序生命周期)。

当我运行 Pax Exam 测试时,所有包都已解析,但我的 IApplication 未启动。

如何在 Pax Exam 中运行此类应用程序?

此外,我怎样才能传递一些应用程序参数?我只看到一些 frameworkProperty (-F) 和 systemProperty (-D),但我需要一些常规的应用程序参数。

4

2 回答 2

0

The IApplication is part of Equinox, and uses the registry to find out what is installed. So as well as including the appropriate jars in PAX, you'll also need to ensure that you start at least declarative services and the extension registry bundles, as otherwise the IApplication stuff won't be found.

Secondly there is no bundle that calls the EclipseStarter class, which is the thing that handles the main arguments, and which passes that through to the runtime. So unless you're doing that yourself, you will find that the application won't run at all.

If you're starting Eclipse specifically you might find some Eclipse-specific arguments to specify these as Java system properties:

http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fmisc%2Fruntime-options.html

for example, you could specify -Dapplication.id=yourapp

You might also try eclipse.commands as a newline-separated list of arguments.

于 2014-09-24T13:55:54.767 回答
0

据我所知,IApplication 不是春分的一部分,而是日食平台的一部分。所以我认为它在pax考试中没有直接支持。Pax 考试只会启动 OSGi 框架并加载和启动您指定的包。

因此,完成这项工作的方法可能是加载负责启动应用程序的 eclipse 包。我不确定这将如何详细工作。

当使用 Eclipse 特定的东西时,您的应用程序的可移植性会降低。那么,也许您可​​以使用纯 OSGi 基础架构实现相同的目标?

还是您要测试的应用程序是 Eclipse RCP 应用程序?在这种情况下,pax 考试可能不是最好的测试工具。在这种情况下,一些 UI 测试框架会更好地匹配。(例如https://developers.google.com/java-dev-tools/wintester/html/

于 2014-09-24T07:38:20.770 回答