OSGi测试片段依赖于Eclipse-ExtensibleAPI

时间:2014-03-22 09:38:05

标签: java dependencies osgi eclipse-rcp

如果我理解正确,OSGi中建议的白盒测试方法是将(测试)片段添加到需要测试的bundle中。我有以下设置:

  • Bundle' com.bundleA'与包' com.bundleA.foo'
  • 片段' com.bundleA.tests'与包&com; bundleA.foo' &安培; ' com.bundleA.utils'
  • Bundle' com.bundleB'使用包' com.bundleB.bar'
  • 片段' com.bundleB.tests'使用包' com.bundleB.bar'
  • ' com.bundleA'出口' com.bundleA.foo'
  • ' com.bundleA.tests'出口' com.bundleA.utils'
  • ' com.bundleB' import package' com.bundleA.foo'

我的用例如下:我想要' com.bundleB.tests'导入' com.bundleA.utils'。在OSGi中,导出包的位置并不重要。然而,Eclipse PDE需要Eclipse-ExtensibleAPI = true'在' com.bundleA'让它明白' com.bundleA.tests'可以导出其他包。但是,在编译时' com.bundleB'现在可以访问来自&com; bundleA.foo'在测试片段中!这是不受欢迎的,因为片段不会被部署,因此会出现运行时错误。

在这种情况下,最佳做法是什么?

1 个答案:

答案 0 :(得分:0)

问题在于您的用例:您希望com.bundleB.tests导入com.bundleA.utils,但com.bundleA.utils是com.bundleA的一个片段。为单元测试创​​建片段是可以的,但是当这些片段的某些部分必须被其他bundle的其他单元测试使用时,则不行。 您应该创建一个仅包含必须共享的utils类的包(com.bundleC),该类仅由unittest片段使用,并且包含com.bundleA.utils包。