我正在开发一个由几个Eclipse插件组成的Eclipse功能,使用Equinox声明性服务(DS)在运行时将插件连接在一起.我想添加集成测试来验证equinox配置.
特别是,我想验证一下
服务组件按预期绑定在一起
捆绑包已激活
插件按预期共享信息(参见编辑2)
此外,我想使用Eclipse PDE无头构建(如此处和此处所述)将此集成测试作为我的持续集成过程的一部分.
我的问题是:您能否推荐任何框架,工具或实践,以便在我确定的约束条件下促进此类集成测试?
到目前为止我找到了两个线索:
Spring Dynamic Modules包含一个OSGi集成测试框架.但是,我无法在Eclipse中运行简单的Spring DM测试.它抱怨"平台已经在运行".
Pax Exam(以前称为Pax Drone)是另一个OSGi集成测试框架.
编辑:为了澄清,每个插件都有一个配置了组件定义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不会发挥其魔力?