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

eclipse 扩展

最近,我为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 扩展

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/339166.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入理解右值引用,move语义和完美转发

move语义最原始的左值和右值定义可以追溯到C语言时代&#xff0c;左值是可以出现在赋值符的左边和右边&#xff0c;然而右值只能出现在赋值符的右边。在C 里&#xff0c;这种方法作为初步判断左值或右值还是可以的&#xff0c;但不只是那么准确了。你要说C 中的右值到底是什么&…

java future用法_纯干货:Java学习过程中的21个知识点和技术点

我们在Java学习过程中要学会抓重点&#xff0c;善于总结&#xff0c;Java学习过程中常见的21个知识点和技术点你知道吗&#xff1f;下面和千锋广州小编一起来看看吧&#xff01;1. JVM相关对于刚刚接触Java的人来说&#xff0c;JVM相关的知识不一定需要理解很深&#xff0c;对此…

如何优雅地检测类型/表达式有效性?

注1&#xff1a;本文至少需要编译器支持C 11。注2&#xff1a;本文不考虑使用宏。一、老办法在写C 的时候&#xff0c;有时候可能需要检查一个类是否有特定的成员类型&#xff0c;例如&#xff1a;// 检查 T::type 是否存在&#xff0c;存在则 value 为 true&#xff0c;否则为…

swagger api文档_带有Swagger的Spring Rest API –公开文档

swagger api文档创建API文档后&#xff0c;将其提供给涉众很重要。 在理想情况下&#xff0c;此发布的文档将足够灵活以解决任何最后的更改&#xff0c;并且易于分发&#xff08;就成本以及完成此操作所需的时间而言&#xff09;。 为了使之成为可能&#xff0c;我们将利用我在…

nuxt解决首屏加载慢问题_一个 Node 脚本让你的前端项目加载速度飞起来

写在最前面我的原创什么声明变成什么鬼了……前言随着前端三大框架的盛行&#xff0c;越来越多的前后端分离项目在服务器上跑了起来&#xff0c;随之而来&#xff0c;开发者也慢慢发现了这种开发模式所带来的弊端&#xff0c;其中之一就是首屏加载速度特别慢&#xff0c;因为虽…

数据库连接配置tomcat_Tomcat到Wildfly:配置数据库连接

数据库连接配置tomcat该摘录摘自《 从Tomcat到WildFly 》一书&#xff0c;您将在其中学习如何将现有的Tomcat体系结构移植到WildFly&#xff0c;包括服务器配置和在其顶部运行的应用程序。 WildFly是完全兼容的Java Enterprise Edition 7容器&#xff0c;与Tomcat相比&#xf…

左值、右值、左值引用、右值引用

【导读】&#xff1a;本文主要详细介绍了左值、右值、左值引用、右值引用以及move、完美转发。左值和右值左值&#xff08;left-values&#xff09;&#xff0c;缩写&#xff1a;lvalues右值&#xff08;right-values&#xff09;&#xff0c;缩写&#xff1a;rvalues直接上官网…

wxpython界面切换_wxpython实现按钮切换界面的方法

本文实例为大家分享了wxpython按钮切换界面的具体实现代码&#xff0c;供大家参考&#xff0c;具体内容如下 #-*- coding:utf-8 -*- import wx class TestFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self,None,-1,u登陆,size(370,280),stylewx.MINIMIZE_BOX| wx.…

jboss 4.3.0_JBoss BPM Suite 6.0.3版本的5个实用技巧

jboss 4.3.0上周&#xff0c;红帽发布了JBoss BPM Suite的下一个版本&#xff0c;标记为6.0.3 &#xff0c;已订阅的用户可以在其客户门户中使用。 如果您对本发行版中的新增功能感到好奇&#xff0c;请在客户门户网站上在线查看发行说明和其余文档 。 我们正在寻找一些简单的…

C 条件变量使用详解

condition_variable介绍在C 11中&#xff0c;我们可以使用条件变量&#xff08;condition_variable&#xff09;实现多个线程间的同步操作&#xff1b;当条件不满足时&#xff0c;相关线程被一直阻塞&#xff0c;直到某种条件出现&#xff0c;这些线程才会被唤醒。其主要成员函…

pannel添加的子窗体很大_超简单的地瓜粉焖子做法全解,零失败

总以为做焖子是一项很大的工程&#xff0c;如果朋友知道你会做焖子定会用惊叹的语气崇拜你&#xff0c;想多一项厨艺吗&#xff0c;想让家人吃上自己亲手做的焖子吗&#xff1f;使用艺琳农场的地瓜粉一定让你出手不凡的&#xff0c;超简单&#xff0c;往下看哦新手为了担心霍霍…

多线程队列的算法优化

【导读】&#xff1a;本文主要讲解多线程队列的优化。多线程队列&#xff08;Concurrent Queue&#xff09;的使用场合非常多&#xff0c;高性能服务器中的消息队列&#xff0c;并行算法中的Work Stealing等都离不开它。对于一个队列来说有两个最主要的动作&#xff1a;添加&am…

linux 文件大小_整理 | Linux下列出目录内容命令

IT服务圈儿有温度、有态度的IT自媒体平台来源&#xff1a;良许Linux(ID&#xff1a;liangxuxiansheng)在 Linux 中&#xff0c;有非常多的命令可以让我们用来执行各种各样的任务。当我们想要像使用文件浏览器一样列出一个目录下的内容时&#xff0c;大家第一时间想到的是 ls 命…

多线程程序中操作的原子性

0. 背景原子操作就是不可再分的操作。在多线程程序中原子操作是一个非常重要的概念&#xff0c;它常常用来实现一些同步机制&#xff0c;同时也是一些常见的多线程Bug的源头。本文主要讨论了三个问题&#xff1a;1. 多线程程序中对变量的读写操作是否是原子的&#xff1f;2. 多…

.net mvc actionresult 返回字符串_ASP.NET Core中的Action的返回值类型

在Asp.net Core之前所有的Action返回值都是ActionResult&#xff0c;Json(),File()等方法返回的都是ActionResult的子类。并且Core把MVC跟WebApi合并之后Action的返回值体系也有了很大的变化。ActionResult类ActionResult类是最常用的返回值类型。基本沿用了之前Asp.net MVC的那…

.jdeveloper_在JDeveloper 12.1.3中为WebSocket使用Java API

.jdeveloper介绍 最新版本的JDeveloper 12c&#xff08;12.1.3.0&#xff09;和WebLogic Server 12.1.3一起提供了一些新的Java EE 7功能。 其中之一是对用于WebSocket的JSR 356 Java API的支持。 实际上&#xff0c;从12.1.2.0版本开始就支持WebSocket协议&#xff08;RFC 645…

为什么程序员需要关心顺序一致性,而不是 Cache 一致性?

本文所讨论的计算机模型是Shared Memory Multiprocessor&#xff0c;即我们现在常见的共享内存的多核CPU。本文适合的对象是想用C 或者Java进行多线程编程的程序员。本文主要包括对Sequential Consistency和Cache Coherence的概念性介绍并给出了一些相关例子&#xff0c;目的是…

canoco5冗余分析步骤_打造高性能的大数据分析平台

大数据时代&#xff0c;大数据的应用与挖掘&#xff0c;大数据的分析和决策&#xff0c;大数据在经济社会的运行轨道上发挥着愈来愈重要的作用。对于大数据分析&#xff0c;现在好多互联网金融公司和传统的商业银行、证券基金公司都非常看重。个个都想在大数据分析中获得重要信…

C 迭代器iterator的实现原理

在经典的设计模式中&#xff0c;有一种迭代器模式&#xff0c;定义为&#xff1a;提供一个对象来顺序访问聚合对象中的一系列数据&#xff0c;而不暴露聚合对象的内部表示。迭代器的主要优点如下&#xff1a;访问一个聚合对象的内容而无须暴露它的内部表示。遍历任务交由迭代器…

html如何在画布上加层,在Canvas中嵌套Html

大概是这样的&#xff0c;现在需要根据一下上传的图片以及一些输入生成图片。本来打算用imagemagick的&#xff0c;但是后来觉得这样前后端要搞两份不同的代码&#xff0c;然后imagemagick使用起来远没有canvas用起来顺手啊。So&#xff0c;最终决定就用Canvas搞定它了&#xf…