eclipse片段最常见的用途之一是作为JUnit测试类的容器。但是当它扮演另一个更重要的角色时,如何为Eclipse片段编写JUnit测试呢?例如,当它具有平台特定的代码时。
问题是不可能为一个片段创建一个片段。而且,您无法编写用于主机插件的测试来测试该片段,因为它甚至在片段仅在运行时才“合并”到主机中时才编译。
我不知道令人满意的解决方案,但是,您可能要考虑这些解决方法。
Eclipse可扩展API
您可以Eclipse-ExtensibleAPI
像这样使用清单标头
Eclipse-ExtensibleAPI: true
它将导致由片段导出的软件包由主机捆绑包重新导出。现在,您可以创建一个测试包,该包导入所需的软件包,因此可以访问片段中的公共类型。
这不像测试片段那么近,在测试片段中,您可以使用相同的类加载器从测试和生产代码中受益,该类加载器可以访问程序包专用的类型和方法。但是您至少可以通过公开途径进行测试。
但是请注意,此标头特定于Eclipse PDE,不属于OSGi规范的一部分。因此,您与该开发环境紧密相连。此外,片段的软件包将通过其主机捆绑软件导出,并且不仅对于测试捆绑软件而且对于所有捆绑软件都是可见的。
Java库
如果您的片段几乎没有依赖关系,并且不需要OSGi / Eclipse运行时,则可以考虑将其作为普通Java库进行wrt测试。另一个同级Java项目可能包含测试,并且在片段项目上具有项目相关性(“属性”>“ Java构建路径”>“ Projects”)。同样,无法访问软件包私有成员。
而且,如果您使用Maven / Tycho之类的构建工具,则需要一些额外的工作来声明依赖关系并在构建过程中执行这些测试。
Bndtools
您还可以研究Bndtools,以查看该开发工具是否比Eclipse插件开发环境(PDE)更适合您的需求。
纯JUnit测试与生产代码保存在同一项目中的单独源文件夹中。这将使您的测试代码可以像使用测试片段一样访问生产代码。
Bndtools还支持执行集成测试,尽管我怀疑您是否可以通过片段提供的服务或其他API来访问片段代码。
对于CI构建,Bndtools项目通常在相应的bnd
(http://bnd.bndtools.org/)插件的帮助下使用Maven或Gradle 。就像使用Maven / Tycho来构建和打包PDE项目一样。
由于Bndtools是开发OSGi捆绑软件的IDE扩展,因此它不了解Eclipse插件的特殊性,例如plugin.xml
。中声明的扩展。因此,没有针对这些工件的构建器和编辑器。但是,如果幸运的话,甚至可以使用PDE构建器显示无效扩展名和扩展点的错误标记。
在同一项目中具有生产代码和测试代码所带来的另一个缺点是,在开发时对于生产代码而言,纯测试依赖项(如JUnit,模拟库等)也可见。
当然,生成的(片段)捆绑包既不包含测试代码,也不包含测试依赖项。
但是,Bndtools本身是使用Bndtools开发的。因此,有证据表明Bndtools可用于编写Eclipse插件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句