编程语言
首页 > 编程语言> > java-Eclipse插件TDD?

java-Eclipse插件TDD?

作者:互联网

开发Eclipse插件时如何做TDD?
由于PDE是清单优先的方法,因此没有“测试范围的依赖项”之类的东西.

我是否应该在一边进行另一个基于Maven的项目?并直接在其构建路径中添加插件项目? (由于插件项目不是基于Maven的,因此不会在.m2中).这似乎不是一个很好的设置…

我已经读过某个插件片段可以完成工作的地方,但是我必须手动将MockitoEasyMock添加到自定义存储库中?还是将其包含在该片段内的类路径中?这似乎不太方便.

我已经习惯了Bndtools,但是它适合eclipse插件吗?

另外,我通常使用InfinitestMoreUnits,如果测试位于第二个项目中,我猜后者将不起作用?

最后,我只读了约Eclipse Tycho,这是一组Maven插件
构建eclipse插件,即使它在孵化器中,它也是一个合适的选择吗?

解决方法:

多年来,我们已经在多个项目中使用了测试片段,并发现它是最实用的方法.

因为该片段与其主机束共享相同的类加载器,所以您的测试可以访问内部包和包私有方法,就像没有OSGi容器一样.

片段甚至可以包含fragment.xml,您可以在其中提供扩展以测试是否必要.

测试驱动的插件开发中最烦人的部分是PDE测试本身.一旦您的被测试代码要求工作台正在运行,测试执行速度就会大大降低. PDE测试启动Eclipse工作台以在其中执行测试.

因此,我们努力将我们的代码与工作台代码尽可能地隔离开.这使我们能够在可能的情况下编写“快速的”普通JUnit测试,并且在绝对必要时仅求助于PDE测试.两种测试都可以驻留在相同的片段中,并通过处理方式进行区分.

需要通过目标平台提供测试依赖项(JUnit,Mock库,匹配器库等)(以及其他非测试依赖项).虽然混合这些依赖关系看起来很奇怪,但我们在实践中没有任何问题.

MoreUnit恰好适合此设置.可以对每个项目进行配置,以在特定的源文件夹中查找测试/生产代码类,即使它们位于不同的项目中也是如此.

Infinitest可能不适合执行PDE测试,仅因为它们的执行速度慢而Infinitests即将频繁执行快速测试.但是,如果可以排除PDE测试,您仍然可以将其用于普通的JUnit测试.

例如,Eclipse Extras项目应用了所描述的技术-如果您有兴趣,可以探索资源以了解它们在实践中如何工作.

如果您从头开始,Bndtools当然值得考虑.我听说Bndtools开发人员使用Bndtools来构建Bndtools. AFAIK Bndtools不对插件工件(例如plugin.xml)进行编辑支持.但是也许您可以将PDE插件编辑器与Bndtools一起使用来编辑扩展和扩展点.

在典型的Bndtools项目中,您的生产代码和测试代码位于同一项目内的不同源文件夹中,就像maven项目一样.
但是,测试源文件夹不包括在结果包中.

在同一项目中包含生产和测试代码的缺点是,从生产代码中可以看到测试依赖性.这是因为两个源文件夹共享相同的类路径容器.

尽管Tycho具有孵化器的地位,它却是测试和构建各种Eclipse工件(如插件,功能,目标平台和产品)的好工具.结合上述设置,我们在CI服务器上使用Tycho来构建,运行测试
最后为我们的插件项目打包p2存储库.

关于该主题的更多资源:

> Where should I put testcode for an Eclipse plugin fragment?
> http://www.modumind.com/2007/06/20/unit-testing-plug-ins-with-fragments/
> http://blog.code-cop.org/2012/05/eclipse-plugin-unit-testing.html

标签:maven,osgi,eclipse-plugin,tdd,java
来源: https://codeday.me/bug/20191120/2044241.html