Aar*_*rup 10 eclipse integration-testing osgi eclipse-pde
我正在开发一个由几个Eclipse插件组成的Eclipse功能,使用Equinox声明性服务(DS)在运行时将插件连接在一起.我想添加集成测试来验证equinox配置.
特别是,我想验证一下
此外,我想使用Eclipse PDE无头构建(如此处和此处所述)将此集成测试作为我的持续集成过程的一部分.
我的问题是:您能否推荐任何框架,工具或实践,以便在我确定的约束条件下促进此类集成测试?
到目前为止我找到了两个线索:
编辑:为了澄清,每个插件都有一个配置了组件定义xml文件的OSGi服务组件.其中一个配置文件中的错误不会破坏任何插件依赖性,并且很容易在运行时被忽视.必须进行集成测试才能检测到此类故障.
编辑2:到目前为止,我所看到的每件事似乎都证实了Uri的断言(见下文),多插件Eclipse功能未在功能/产品级别进行集成测试.如果我能至少自动验证服务组件是否正确绑定在一起,我愿意不进行全面的集成测试.
我的方法(还没有工作):
In a JUnit test do
For each bundle/plugin of interest
Get the osgi Bundle object with org.eclipse.core.runtime.Platform.getBundle()
Verify that the Bundle is active with Bundle.getState()
Verify that the Bundle is using the expected services with Bundle.getServicesInUse()
Verify that the Bundle has registered the expected services with Bundle.getRegisteredServices()
我正在使用Eclipse Plug-in Test启动配置运行我的代码,启动我的Eclipse产品作为"Run to Run".测试运行时,我可以验证捆绑包是否处于活动状态,但服务组件未激活,getServicesInUse和getRegisteredServices方法返回null.我从每个捆绑中加载了一个类,以防它是一个懒惰激活问题,但这没有帮助.我还验证了所有服务组件都是"立即"组件,因此一旦它们的软件包被激活就应该激活它们. 为什么Equinox DS不会发挥其魔力?
我们基于以下方法的组合编写了自己的小测试执行框架:a)rcp bundletestcollector(http://rcpquickstart.com/2008/06/12/running-unit-tests-for-rcp-and-osgi-applications / ) 这是由 Pascal Rapidcault 编写的,他是 RCP 的主要成员之一。它从运行的 OSGi 环境中的包中收集测试类。
b) knopflerfish 测试框架 ( http://knopflerfish.org/releases/2.1.1/knopflerfish_osgi_tests_2.1.1.zip ) 将测试用例注册为可由测试运行程序执行的服务。还有一个 XML 输出,不幸的是它与 ant junit XML 格式有点不同。
通过这种方式,我们可以执行位于单独测试包中的集成测试,以及更接近于经典单元测试并位于测试包中的片段的测试(请参阅http://rcpquickstart.com/2007/06/20/unit-测试插件与片段/)。