代码之家  ›  专栏  ›  技术社区  ›  Aaron Novstrup

Eclipse特性集成测试的最佳实践

  •  10
  • Aaron Novstrup  · 技术社区  · 17 年前

    特别是,我想核实一下

    • 束被激活
    • 插件按预期共享信息 编辑2 )

    此外,我希望使用eclipsepde无头构建(如前所述),将此集成测试作为持续集成过程的一部分 here here

    我的问题是 : 你能推荐一些框架、工具或实践来促进我所确定的约束条件下的这种集成测试吗?

    • Spring Dynamic Modules 包括一个用于OSGi集成测试的框架。但是,我还不能在Eclipse中运行一个简单的springdm测试。它抱怨说“平台已经在运行”。
    • 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插件测试启动配置运行我的代码,将Eclipse产品作为“要运行的程序”启动。当测试运行时,我可以验证bundle是活动的,但是服务组件没有被激活,getservicesusine和getRegisteredServices方法返回null。我从每个bundle中加载了一个类,以防出现延迟激活问题,但这没有帮助。我还验证了所有的服务组件都是“即时”组件,因此它们应该在其捆绑包被激活后立即激活。 为什么春分DS没有发挥它的魔力?

    1 回复  |  直到 17 年前
        1
  •  2
  •   jens    17 年前

    我们根据to方法的组合编写了自己的小测试执行框架: a) rcp集束测试收集器( http://rcpquickstart.com/2008/06/12/running-unit-tests-for-rcp-and-osgi-applications/ 这是由帕斯卡·拉皮德考特写的,他是RCP的主要成员之一。它从运行的OSGi环境中的bundle收集测试类。

    b) knopflerfish测试框架( http://knopflerfish.org/releases/2.1.1/knopflerfish_osgi_tests_2.1.1.zip 将测试用例注册为可以由测试运行程序执行的服务。还有一个XML输出,不幸的是,它与antjunitxml格式略有不同。

    http://rcpquickstart.com/2007/06/20/unit-testing-plug-ins-with-fragments/ ).