gpt4 book ai didi

java - 使用 Eclipse-ExtensibleAPI 的 OSGi 测试片段依赖性

转载 作者:搜寻专家 更新时间:2023-11-01 00:56:43 32 4
gpt4 key购买 nike

如果我没理解错的话,OSGi 中白盒测试的建议方法是在需要测试的 bundle 中添加一个(测试)片段。我有以下设置:

  • 使用包“com.bundleA.foo”捆绑“com.bundleA”
  • 使用包“com.bundleA.foo”和“com.bundleA.utils”对“com.bundleA.tests”进行分段
  • 将“com.bundleB”与包“com.bundleB.bar”捆绑在一起
  • 片段“com.bundleB.tests”与包“com.bundleB.bar”
  • 'com.bundleA' 导出 'com.bundleA.foo'
  • 'com.bundleA.tests' 导出 'com.bundleA.utils'
  • 'com.bundleB' 导入包 'com.bundleA.foo'

我的用例如下:我希望“com.bundleB.tests”导入“com.bundleA.utils”。在 OSGi 中,包从哪里导出并不重要。然而,Eclipse PDE 需要“com.bundleA”中的“Eclipse-ExtensibleAPI=true”,以使其理解“com.bundleA.tests”可以导出其他包。但是,在编译时,“com.bundleB”现在可以访问测试片段中“com.bundleA.foo”中的类!这是不希望的,因为不会部署片段,因此会出现运行时错误。

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

最佳答案

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

关于java - 使用 Eclipse-ExtensibleAPI 的 OSGi 测试片段依赖性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22575872/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com