如果我理解正确,OSGi中建议的白盒测试方法是将(测试)片段添加到需要测试的bundle中。我有以下设置:
我的用例如下:我想要' com.bundleB.tests'导入' com.bundleA.utils'。在OSGi中,导出包的位置并不重要。然而,Eclipse PDE需要Eclipse-ExtensibleAPI = true'在' com.bundleA'让它明白' com.bundleA.tests'可以导出其他包。但是,在编译时' com.bundleB'现在可以访问来自&com; bundleA.foo'在测试片段中!这是不受欢迎的,因为片段不会被部署,因此会出现运行时错误。
在这种情况下,最佳做法是什么?
答案 0 :(得分:0)
问题在于您的用例:您希望com.bundleB.tests导入com.bundleA.utils,但com.bundleA.utils是com.bundleA的一个片段。为单元测试创建片段是可以的,但是当这些片段的某些部分必须被其他bundle的其他单元测试使用时,则不行。 您应该创建一个仅包含必须共享的utils类的包(com.bundleC),该类仅由unittest片段使用,并且包含com.bundleA.utils包。