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