最近,我为Eclipse扩展点评估引入了一个小助手。 辅助程序努力减少通用编程步骤的样板代码,同时增加开发指导和可读性。

这篇文章是希望的后续文章,展示了如何将实用程序与AssertJ定制断言结合使用,以编写针对Eclipse扩展的轻量级集成测试。

Eclipse扩展

在Eclipse中,松耦合是通过扩展点和扩展机制部分实现的。 因此,扩展充当对特定扩展点的贡献。 但是,扩展名和扩展点的声明性有时会导致出现问题,可能很难跟踪。

如果偶然删除了扩展声明,使用参数扩展了可执行扩展的默认构造函数,未将plugin.xml添加到build.properties可能是这种情况。

取决于PDE错误/警告设置,应该通过标记将许多此类问题告知他人,但是由于某种原因,它会一次又一次地发生,导致无法识别贡献,并且由于错误跟踪而浪费了宝贵的时间。

因此,进行轻量级集成测试以验证是否确实可以使用某个贡献可能会有所帮助。

有关如何使用扩展点机制扩展Eclipse的一般信息,您可以参考在线文档的《 插件开发环境指南 》。

与JUnit插件测试的集成测试

给定最后一个帖子的扩展点定义...

…扩展贡献可能看起来像这样:

<extensionpoint="com.codeaffine.post.contribution"><contributionid="myContribution"class="com.codeaffine.post.MyContribution"></contribution></extension>

假设我们具有“使用片段测试插件”中所述的测试片段 ,我们可以引入PDETest来验证上面具有给定id的扩展是否存在并且可以由默认构造函数实例化。 此测试利用了上一篇文章介绍的RegistryAdapter和称为ExtensionAssert的特定自定义断言:

public class MyContributionPDETest {@Testpublic void testExtension() {Extension actual = new RegistryAdapter().readExtension( "com.codeaffine.post.contribution" ).thatMatches( attribute( "id", "myContribution" ) ).process();assertThat( actual ).hasAttributeValue( "class", MyContribution.class.getName() ).isInstantiable( Runnable.class );}
}

如前一篇文章所述, RegistryAdapter#readExtension(String)精确读取给定“ id”属性的一个扩展名。 如果它使用此属性检测到多个贡献,则将引发异常。

ExtensionAssert#assertThat(Extension) (通过静态导入使用)提供了一个AssertJ自定义断言,该断言提供了一些对扩展贡献的常见检查。 该示例验证了'class'属性的值与该贡献的实现类型的完全限定名称匹配,该可执行扩展实际上可以使用默认构造函数实例化,并且该实例可分配给Runnable

在哪里得到的?

对于那些想要签出的人,有一个P2存储库,其中包含com.codeaffine.eclipse.core.runtimecom.codeaffine.eclipse.core.runtime.test.util功能, 其中提供RegistryAdapterExtensionAssert 。 该存储库位于:

  • http://fappel.github.io/xiliary/

源代码和问题跟踪器托管在:

  • https://github.com/fappel/xiliary

尽管目前完全没有文档,但是应该很容易从本文和上一篇文章的说明开始。 但是请记住,这些功能还处于早期状态,可能会发生一些API更改。 特别是,嵌套扩展的断言目前似乎太弱了。

如果您有改进的想法或发现了一些错误,则问题跟踪器可能是处理此问题的最佳位置,其他任何地方都可以使用下面的评论部分。

翻译自: https://www.javacodegeeks.com/2014/11/lightweight-integration-tests-for-eclipse-extensions.html

Eclipse扩展的轻量级集成测试相关推荐

  1. eclipse 扩展_Eclipse扩展的轻量级集成测试

    eclipse 扩展 最近,我为Eclipse扩展点评估引入了一个小助手. 辅助程序努力减少通用编程步骤的样板代码,同时增加开发指导和可读性. 这篇文章是希望的后续文章,它显示了如何将实用程序与Ass ...

  2. Eclipse扩展点评估变得容易

    对Eclipse扩展点进行编码的评估有些冗长,而且很少能自我解释. 最近,我开始忙于处理这个主题,我写了一个小助手,目的是减少通用编程步骤的样板代码,同时增加开发指导和可读性. 它原来是不容易找到一个 ...

  3. eclipse扩展点_Eclipse扩展点评估变得容易

    eclipse扩展点 编码Eclipse扩展点评估有点冗长,而且很少能自我解释. 当我最近忙于自己忙于这个话题时,我写了一个小助手,目的是减少通用编程步骤的样板代码,同时增加开发指导和可读性. 它原来 ...

  4. 这个VS Code扩展可以自动生成Python文档字符串

    机器之心报道 编辑:魔王 该扩展利用可处理编程语言和自然语言的预训练模型 CodeBERT,实现快速生成 Python 文档字符串的功能. Visual Studio Code(简称 VS Code) ...

  5. 利用CodeBERT,这个VS Code扩展可以自动生成Python文档字符串

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 来自:机器之心 该扩展利用可处理编程语言和自然语言的预训练模型 CodeBERT,实现 ...

  6. 定制Eclipse IDE之界面篇

    为什么要定制IDE? 在工作时候,当公司有了自己的框架,给自己开放人员用,甚至是可以卖的时候,我们可以做成一个产品,而这个产品将包括框架本身.文档.工具.教程等等.工具之中最重要的莫过于开发工具(ID ...

  7. 有没有办法折叠Eclipse中的所有代码块?

    Eclipse在左侧有"+/-"来展开和折叠代码块. 我已经有成千上万的线要经过,并且真的想要崩溃一切,并选择性地扩展块以查看它们. #1楼 如果您在Eclipse中使用PyDev ...

  8. jodd忽略ssl证书_Jodd - Java界的瑞士军刀,无法想象的轻量级工具包

    Jodd介绍 Jodd是对于Java开发更便捷的开源迷你框架,包含工具类.实用功能的集合,总包体积不到1.7M. Jodd构建于通用场景使开发变得简单,但Jodd并不简单!它能让你把事情做得更好,实现 ...

  9. vscode python 自动补全_利用CodeBERT,这个VS Code扩展可以自动生成Python文档字符串...

    机器之心报道 编辑:魔王 该扩展利用可处理编程语言和自然语言的预训练模型 CodeBERT,实现快速生成 Python 文档字符串的功能. Visual Studio Code(简称 VS Code) ...

最新文章

  1. Scala implement Comb Sort
  2. 985高校挖出古墓!网友:毕业论文自己找上门来了
  3. las数据转pcd并显示
  4. 基于R的信用评分卡模型解析
  5. 在asp.net core中使用托管服务实现后台任务
  6. 4.5.3 循环控制语句
  7. 2-4MySQL数据库安装与初始化
  8. ubuntu装python3_ubuntu16.04安装python3的包报错
  9. 全球虚拟化服务器排行榜,全球云服务器厂商排名
  10. 旋风系统时间与服务器不一致,更新公告 | 8月15日早8点停服维护
  11. Chrome 解决 CRX HEADER INVALID 问题
  12. 不看后悔!圈内老手总结的18条嵌入式 C 实战经验
  13. JsDelivr CDN缓存刷新工具-缓存清除-缓存更新
  14. contactform7 ajax,Wordpress contact_form_7_v5.0.3 插件 权限提升、任意文件读取漏洞分析...
  15. HTML/CSS中的空格处理
  16. vss2005 配置详解
  17. Cocos2d-x 游戏中子弹的设计
  18. java食堂外卖系统,java毕业设计_springboot框架的饭堂外卖系统
  19. 金融行业容器平台落地路径:敏捷响应业务更迭 1
  20. C语言:指针3(英文单词排序)

热门文章

  1. java实现人脸识别源码【含测试效果图】——DaoImpl层(BaseDaoUtilImpl)
  2. Oracle数据库基本概念理解(1)
  3. 关闭(杀死)8080端口
  4. 关于 tomcat启动后无法访问的问题(localhost:8080 (or your port specified))
  5. MySQL数据检索+查询+全文本搜索
  6. 简单分析KafKa工作原理
  7. 扩展方法 枚举值_扩展枚举功能的两种方法
  8. kotlin dsl_Spring Webflux – Kotlin DSL –实现的演练
  9. 微基准测试 r_在您的构建过程中添加微基准测试
  10. jdbc mysql驱动_MySQL JDBC驱动程序如何处理准备好的语句