1

我有一个具有以下结构的捆绑项目(Eclipse):

src/main/java
   Bundle source files here
src/test/java
   Bundle internal test cases

当我尝试制作捆绑包时,我收到一个错误,指出有一些“未解决的引用”。该错误是由内部测试类引起的。如何配置 BND 以忽略这些类?

将测试用例拆分为一个单独的项目不是一种选择,因为测试用例的粒度比捆绑提供的 API 更精细。

4

3 回答 3

4

问题是 Eclipse 将两者都编译src/main/javasrc/test/java同一个输出目录中,可能是“bin”,而 Bnd 通过扫描 bin 文件夹中已编译的 .class 文件来工作。

您可以按照以下步骤解决此问题:

  1. 右键单击src/test/java并选择构建路径>配置输出文件夹...

  2. 单击“特定输出文件夹”并输入目录名称,例如bin_tests.

现在 Eclipse 会将测试类编译到一个单独的文件夹中,而 Bnd 只会看到真正的类。

于 2011-03-04T05:36:57.870 回答
1

在 OSGi 中进行单元测试的好方法是使用片段。因此,您可以将您的测试放在一个片段包中,这样您就不会再遇到这个问题了。此外,测试将可以访问所有类,而不仅仅是 API,如果你将它们放在一个简单的包中就会出现这种情况

于 2011-03-02T16:10:09.237 回答
0

我假设您的测试类包含在 jar 包文件中(不应该是这种情况)。检查 jar 文件的内容并修改打包过程以不包含测试类(maven 构建不包含src/test/java)。

在使用 m2eclipse 打包我的项目时,我有时会注意到这种行为,而从命令行运行 maven 效果很好。

于 2011-03-02T16:47:44.953 回答