前端单元测试 - Eclipse功能集成测试的最佳实践



osgi integration-testing (1)

我们基于以下方法编写了我们自己的小测试执行框架: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- testing-plug-ins-with-fragments / )。

我正在开发由多个Eclipse插件组成的Eclipse功能,使用Equinox声明式服务(DS)在运行时将插件连接在一起。 我想添加集成测试来验证春分配置。

特别是,我想验证一下

  • 服务组件按预期结合在一起
  • 捆绑包被激活
  • 插件按预期共享信息 (请参阅编辑2

此外,我想使用Eclipse PDE无头构建(如此此处所述 )将此集成测试作为我的持续集成过程的一部分。

我的问题是 :您能否推荐任何框架,工具或实践,以便在我确定的限制内促进此类集成测试?

到目前为止,我发现了两条线索:

  • Spring Dynamic Modules包含一个OSGi集成测试框架。 但是,我还没有能够在Eclipse中运行简单的Spring DM测试。 它抱怨说“该平台已经在运行”。
  • Pax考试 (以前的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产品作为“要运行的程序”。 测试运行时,我可以验证捆绑包是否处于活动状态,但服务组件未被激活,并且getServicesInUse和getRegisteredServices方法返回null。 我从每个包中加载了一个类,以防延迟激活问题,但这并没有帮助。 我还验证了所有服务组件都是“即时”组件,所以它们应该在其捆绑包激活后立即启动。 为什么不是Equinox DS发挥它的魔力?





eclipse-pde