为Eclipse片段创建JUnit测试的正确方法是什么?

bdshadow

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项目通常在相应的bndhttp://bnd.bndtools.org/)插件的帮助下使用Maven或Gradle 就像使用Maven / Tycho来构建和打包PDE项目一样。

由于Bndtools是开发OSGi捆绑软件的IDE扩展,因此它不了解Eclipse插件的特殊性,例如plugin.xml。中声明的扩展因此,没有针对这些工件的构建器和编辑器。但是,如果幸运的话,甚至可以使用PDE构建器显示无效扩展名和扩展点的错误标记。

在同一项目中具有生产代码和测试代码所带来的另一个缺点是,在开发时对于生产代码而言,纯测试依赖项(如JUnit,模拟库等)也可见。

当然,生成的(片段)捆绑包既不包含测试代码,也不包含测试依赖项。

但是,Bndtools本身是使用Bndtools开发的。因此,有证据表明Bndtools可用于编写Eclipse插件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为isSorted()方法创建JUnit测试用例的最佳方法是什么?

为内联汇编创建常量池的正确方法是什么?

为 Vue 道具创建类型的正确方法是什么

恢复片段的正确方法是什么?

ViewPager和片段—存储片段状态的正确方法是什么?

测试此任务的正确方法是什么?

测试类型的正确方法是什么?

为产生结果的方法编写Minitest测试的正确方法是什么?

为涉及命名Unity资源的单元测试设置模拟的正确方法是什么?

测试批处理文件中参数是否为空的正确方法是什么?

测试类型是否为分配器的正确方法是什么?

从颜色创建画笔的正确方法是什么?

创建预设结构的正确方法是什么?

创建复杂元素的正确方法是什么?

在MvvmCross 3.5.1中实现片段的正确方法是什么

通过 maven for Spring Boot 应用程序为 AWS Beanstalk 创建 .ebextensions 的正确方法是什么

使用 react hooks 和 typescript 为 action 对象创建接口的正确方法是什么

为本地安装创建自己的软件包的正确方法是什么?

在Rust中为线程或函数创建超时的正确方法是什么?

为TFliteconverter创建代表性数据集的正确方法是什么?

为使用`python -m zipapp`创建的独立应用程序导入模块的正确方法是什么?

为用户创建自定义“项目页面”的正确方法是什么?

什么是在JUnit测试多个构造函数的正确方法?

测试Java方法输出的“正确”方法是什么?

为SendGrid创建JUnit测试

在Codeception中为单元测试套件添加自定义Helper方法的正确方法是什么?

Junit / Java为异常创建void的测试方法

当片段大小可以改变每次迭代时,在循环中消耗片段的正确方法是什么?

测试硒中必填字段的正确方法是什么