Pao*_*olo 6 java eclipse unit-testing tycho maven
我正在寻找测试一组eclipse插件的可能性,而不必为每个经过测试的插件使用单个bundle.目前我有一个运行Eclipse产品的PDE版本(大约70个插件,功能和产品).所有插件的所有单元测试都包含在一个普通java项目中,具有对所有插件的Eclipse项目引用,以便能够实例化类并运行测试.由于普通java项目错过了所有目标平台项目,因此我将PDE构建转换为maven tycho时,此设置不再有效.我没有执行真正的OSGI插件测试,但是有些测试要求在类路径中包含IProgressMonitor等核心eclipse类,因为我在自己的方法签名中也使用了这些eclipse运行时接口.
在成功设置新的maven tycho构建之后,我尝试了一些可能性让测试再次运行:
1)将plain-java测试项目转换为插件测试项目
缺点:
- 为了能够在内部包中测试类,我必须使用x-friend:notation导出每个包,并且必须为每个包重复此过程新的测试包
2)在每个插件中添加第二个源文件夹并将测试移动到相应的插件中
缺点:
- Tycho似乎使用build.properties来包含编译步骤所需的源文件夹.由于src/main/java和src/test/java都需要注册为源文件夹,因此真实类和测试类在target/classes输出文件夹中混合,最后包含在插件的JAR文件中.我没有找到一种方法来配置tycho以使用src/main/java作为sourceDirectory和src/test/java作为testSourceDirectory.
- Tycho只执行单元测试,如果包类型是"eclipse-test-plugin"
- Sonar似乎不认识以这种方式执行的测试(我没有花很多时间试图解决这个问题,也许有一个这方面的简单解决方案)
3)将必要的eclipse目标平台插件作为普通的maven依赖添加到plain-java测试项目中
缺点:
- 目标平台信息被复制,一次在目标平台中用于tycho构建,一次在maven依赖列表中测试项目(使用普通的maven-surefire执行)
- 目标平台包在工件中部署两次,一次作为目标平台p2存档,一次作为maven依赖项(插件+ POM)
4)为每个插件添加一个测试片段(这似乎是通常选择的可能性)
缺点:
- 需要付出巨大努力(> 70个插件,> 4500个单元测试),所以我需要添加大约70个新片段并拆分所有测试.
目前,可能性3)对我来说似乎最合理......有什么建议吗?otherideas?
最后我们使用了方法3
不幸的是,除了提到的关于目标平台 jar 的缺点之外,我们还发现我们需要将每个第三方依赖项添加两次。例如,必须在生产性插件 A(lib 文件夹中的 jar,并在清单中引用为包类路径)中添加一次 apache-commons-math 依赖项,并在测试项目 POM 中作为 maven 依赖项添加一次。我们没有找到其他方法来编译测试项目。基本上,测试项目无法识别 Eclipse 插件 A 中包含的 jar 文件,因为它是 Eclipse 依赖项,而不是 Maven 依赖项。但另一方面,如果我在插件 A 中将库添加为 Maven 依赖项,并从 lib 文件夹中删除 jar,则 Eclipse IDE 将无法编译该项目,因为缺少该库(Maven 依赖项未通过以下方式解析) M2E,如果项目有包类型的 eclipse-plugin。)
我们的设置现在看起来像这样(简化):
父POM
Eclipse插件A,包类型eclipse-plugin,[lib文件夹中的apache-commons-math,添加到Manifest Bundle-ClassPath]
Eclipse 插件 B,包类型 eclipse-plugin
测试项目,包类型为 jar,POM 中对插件 A 和 B 的 Maven 依赖关系以及对 apache-commons-math 的 Maven 依赖关系。
有什么建议么?
| 归档时间: |
|
| 查看次数: |
698 次 |
| 最近记录: |