我有一个具有以下结构的捆绑项目(Eclipse):
src/main/java Bundle source files here src/test/java Bundle internal test cases
当我尝试制作捆绑包时,我收到一个错误,指出有一些“未解决的引用”。该错误是由内部测试类引起的。如何配置 BND 以忽略这些类?
将测试用例拆分为一个单独的项目不是一种选择,因为测试用例的粒度比捆绑提供的 API 更精细。
问题是 Eclipse 将两者都编译src/main/java
到src/test/java
同一个输出目录中,可能是“bin”,而 Bnd 通过扫描 bin 文件夹中已编译的 .class 文件来工作。
您可以按照以下步骤解决此问题:
右键单击src/test/java
并选择构建路径>配置输出文件夹...
单击“特定输出文件夹”并输入目录名称,例如bin_tests
.
现在 Eclipse 会将测试类编译到一个单独的文件夹中,而 Bnd 只会看到真正的类。
在 OSGi 中进行单元测试的好方法是使用片段。因此,您可以将您的测试放在一个片段包中,这样您就不会再遇到这个问题了。此外,测试将可以访问所有类,而不仅仅是 API,如果你将它们放在一个简单的包中就会出现这种情况
我假设您的测试类包含在 jar 包文件中(不应该是这种情况)。检查 jar 文件的内容并修改打包过程以不包含测试类(maven 构建不包含src/test/java
)。
在使用 m2eclipse 打包我的项目时,我有时会注意到这种行为,而从命令行运行 maven 效果很好。