在Eclipse中有效使用JUnit

最近,我被卷入了讨论1和一些受感染的同伴2,他们关于我们如何在Eclipse IDE中使用JUnit 。 令人惊讶的是,对话带来了并非所有人都知道的一些“技巧”。 这使我有了写这篇文章的想法,总结了我们的演讲。 谁知道–也许有人也有新事物……

启动快捷方式

如果您要进行测试驱动开发 ,则必须经常运行测试。 显然,使用例如编辑器的上下文菜单来选择Run As -> JUnit Test来启动正在开发的测试用例会有些乏味。 幸运的是,快捷键Alt+Shift+X,T可以执行相同的操作,而Alt+Shift+D,T可以在调试模式下执行测试。 但是,它所具有的不仅仅是眼神。

考虑以下情况:被测单元不再按预期工作。 您已经意识到这一点,因为您的测试套件的某个测试失败。 看一下代码可能不是确定性的,因此您决定启动调试会话。 为此,您可以在当前光标位置设置一个断点( Ctrl+Shift+B )。 在这种情况下,您可能对重新运行套件甚至给定测试类的所有测试都不感兴趣。 您只想启动单个失败的测试3

现在,重要的是要知道上述的“运行方式”快捷方式对编辑器的光标位置敏感。 将光标移动到测试方法名称,可以使用这些快捷方式启动仅运行该测试方法的JUnit进程4 5

稍微进行一下示例,很有可能在调试过程中在被测单元中发现一个可疑点。 考虑解决方案时,您可以更改该单元的某些代码。 之后,您想查看测试方法是否仍然失败。 幸运的是,Eclipse中还有另一个快捷方式,它允许您重新运行最新执行的启动配置。

使用F11重新运行您的调试会话,并使用Ctrl-F11重新正常运行测试方法。 但是,必须设置首选项设置才能使此工作可靠。 打开启动首选项页面( Windows- >首选项|运行/调试->启动)后,有一个名为启动操作的部分。 确保选中始终启动以前启动的应用程序单选按钮。

方法模板

每次您要创建新的测试方法时,都可以考虑使用Eclipse编辑器模板来提高编码效率。 将光标定位在新测试方法应位于的位置后,键入test并按Ctrl+Space快捷键以弹出内容帮助。

如上图第一部分所示,内容助手提供了一个测试方法模板,该模板将在选择时创建完整的方法存根。 不幸的是,这将是一个JUnit 3样式的方法存根。 但是再次Ctrl+Space将显示第二个以JUnit 4样式编写的模板。 如上图的第二部分所示。

尽管两次都击中了快捷方式,但对于许多开发人员而言仍然显得过于繁琐。 编写测试用例时,通常还必须创建带有@ Before / @ After标记的设置和/或拆卸方法。 但值得庆幸的是,可以在Eclipse中提供自己的编辑器模板。 Holger Staudacher写了一篇名为Eclipse的简单JUnit4模板的好文章,他解释了如何做到这一点,甚至在要旨中提供了一组模板 。

收藏夹

JUnit测试在很大程度上依赖于类junit.framework.Assert提供的各种assertXXX方法的使用。 这些方法都声明为静态方法,例如可以称为Assert.assertTrue(condition) 。 但是据我所知,大多数人将使用静态导入来缩短语句,以便于读取assertTrue(condition)

但是默认情况下,IDE的内容辅助功能不会建议Assert类的静态方法。 解决该问题的一种方法是编写类名称,然后让内容协助提出可用的方法。 可以通过使用骆驼大小写匹配来加速后者。 之后,按照Rüdiger 关于静态导入的文章中所述使用Ctrl+Shift+M可以缩短语句并生成导入。

但是,我认为最有效的方法是将junit.framework.Assert类配置为内容辅助收藏夹,以允许静态成员的提议,即使仍然缺少导入。 配置在(窗口->首选项| Java->编辑器-> Content Assist->收藏夹)中进行,如下所示:


JUnit视图配置

在工作测试驱动下,定期运行测试几乎可以有机地完成6 。 但是,运行较大的测试套件需要一些时间。 同时,将弹出“ JUnit视图”并不断更新测试结果列表。 但这可能会令人振奋,因为它会使人分心,甚至在最坏的情况下也会妨碍您的工作。

通过测试驱动的开发,您希望测试以100%的成功率获得成功。 因此,许多开发人员只想知道有关失败测试的信息-规则的例外。 JUnit视图通过名为Activate on Error/Failure Only的配置设置对此提供支持,该设置Activate on Error/Failure Only可通过viewpart的菜单使用:

您的测试套件有时会失败,并且一次可能存在多个问题。 默认情况下,JUnit视图列出所有测试结果。 但是作为开发人员,您通常对失败的项目更感兴趣,并且可能会将大量的绿色测试视作混乱。 这里关注您的工作意味着关注失败的测试。 有一个名为Show Failures Only的配置设置可用于更改此行为。 由于人们倾向于更频繁地更改此设置,因此在viewpart的工具栏中提供了一个切换按钮。


快速浏览

如果您使用的是Eclipse 3.x ,则有一个名为Fast View的不错的功能,它可以使您的UI更加整洁。 总的来说,对于我经常但不连续使用的视图和/或如果提供更多空间,我认为更清晰的视图,我更喜欢这样做。 例如,“覆盖率”,“历史记录”或“呼叫层次结构”视图。 viewpart选项卡提供了一个内容菜单,该菜单使将视图用作快速视图成为可能:

这会将视图从其堆栈中删除,并在工作台左下角的快速视图工具栏中显示一个切换按钮。 使用此按钮,您可以激活/取消激活特定视图作为叠加层7

JUnit快速查看按钮的一个特定功能是,它提供有关最新测试运行的状态信息或有关当前执行的进度信息的进度信息。 因此,这个小按钮是您在JUnit上花费的大量时间所需的所有UI:

不幸的是,Eclipse 4.x中不再提供快速视图。 但是有一种变通办法可以在某种程度上满足该行为。 您可以将要用作“快速视图”的视图移动到指定的视图堆栈中,并最小化此堆栈。 代表最小化视图堆栈的工具栏现在用作以前的快速视图栏。 之所以如此工作,是因为有时激活/停用会挂起,并且您必须花一点时间来隐藏视图并返回到编辑器。

从本质上讲,我认为上面的部分涵盖了我们在本文开头提到的讨论中所讨论的要点。 也许您还可以获得有关有用的JUnit快捷方式,使用模式之类的信息,或共享这些信息-欢迎添加评论。

  1. 讨论是在我们偶尔希望一次自发的啤酒下班之后中进行的……
  2. 据说“受感染的测试”一词最初是由Erich Gamma创造的。 他还与肯特·贝克 ( Kent Beck)一起发表了一篇名为《 感染了JUnit测试:程序员喜欢编写测试》的文章 ,描述了一旦您与测试一致地推动编程工作,“您对开发的态度可能会改变”。
  3. 特别是,如果断点不是如示例中那样位于测试方法中,而是位于被测单元中,那么运行一个测试用例的所有测试方法会很烦人。 这是因为程序执行可能会在没有问题的一种测试方法实际触发的断点处停止。
  4. 不幸的是,该框架无法将测试方法与非测试方法区分开。 在非测试方法上使用快捷方式将导致JUnit运行,其结果显示为Unrooted Tests错误。
  5. 一些与会者认为,该框架会自动创建并保留启动配置,这是次要的缺点。 因此,通过快捷方式运行单个测试方法会随着时间的推移在启动配置列表中产生很多混乱。
  6. 甚至有可用的工具可以连续运行您的测试。
  7. 在实践中,我经常使用Ctrl+F7快捷键在视图部分之间切换。


参考:来自我们的JCG合作伙伴 Frank Appel在Code Affine博客上有效地在Eclipse中使用JUnit 。

翻译自: https://www.javacodegeeks.com/2012/11/working-efficiently-with-junit-in-eclipse.html

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

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

相关文章

jquery文件上传控件 Uploadify

基于jquery的文件上传控件,支持ajax无刷新上传,多个文件同时上传,上传进行进度显示,删除已上传文件。 要求使用jquery1.4或以上版本,flash player 9.0.24以上。 有两个版本,一个用flash,一个是html5。html5…

php实现第三方邮箱登录_PHP实现用户异地登录提醒功能的方法

有时候你的网站账号被盗或你在别处登录操作后台时,右下角会弹出提示信息,提醒你的账号异地登录,或者会被强制下线。对于这种安全性要求比较高的web网站,很多后台管理都会做这种功能提醒。甄别自己的账号是否被盗或者是否有另一个人…

课时47.datalist标签(了解)

1.datalist标签 作用&#xff1a;给输入框绑定待选项 2.datalist格式&#xff1a; <datalist> <option>待选项内容</option> </datalist> 3.如何给输入框绑定待选列表&#xff1f; 搞一个输入框搞一个datalist列表给datalist列表标签添加一个id给…

postgis安装_从零开始,构建电子地图网站:0_2_数据处理postgis

软件安装完&#xff0c;开始数据处理。从China Historical GIS下载一份数据。一、数据下载数据来源&#xff1a;China Historical GIS&#xff1a;https://sites.fas.harvard.edu/~chgis/data/chgis/v6/先下载一份时间序列数据&#xff1a;Download CHGIS V6 TIME SERIES Datah…

sar图像去噪matlab,一种基于总曲率的SAR图像变分去噪方法与流程

本发明属于数字图像处理技术领域&#xff0c;具体涉及一种基于总曲率的SAR图像变分去噪方法。背景技术&#xff1a;&#xff1a;相干斑噪声是合成孔径雷达(Synthetic Aperture Radar&#xff0c;简称SAR)图像的重要特征&#xff0c;严重影响SAR图像的可解译性。相干斑噪声通常作…

课时2.浏览器和服务器(了解)

1.什么是浏览器&#xff1f; 浏览器就是由安装在我们电脑上的一款软件&#xff0c;QQ&#xff0c;百度影音等一样&#xff0c;都是安装在电脑上的一款软件 那这些软件之间由什么区别呢&#xff1f; 它们的区别就是它们的功能不太一样&#xff0c;QQ是用来聊天的&#xff0c;…

python 定义变量_用python解决动态的定义变量名(并给其赋值方法:大数据处理)...

前言&#xff1a;今天为大家带来的内容是&#xff1a;用python解决动态的定义变量名(并给其赋值方法&#xff1a;大数据处理)具有很好的参考价值&#xff0c;希望对大家有所帮助。喜欢本文内容的记得点赞转发收藏不迷路哦&#xff01;&#xff01;&#xff01;最近消费kafka数据…

课时39.细线表格(理解)

请你设计出以下图片里的这个样式的表格 步骤&#xff1a; 我先来制作一个两行两列的表格 2.将table里的cellspacing设置成0 外边距是不见了&#xff0c;但是和我们想要完成的图片有一定的差距&#xff0c;我们发现这样做出来的图片好像是两条线合并到了一起一样&#xff0c;实…

matlab拼碎纸片过程,碎纸片拼接复原模型

1. 引言破碎文件的拼接在司法物证复原、历史文献修复以及军事情报获取等领域都有着重要的应用。企事业、机关、院校和军队基于保密的需要&#xff0c;使用碎纸机对重要文件&#xff0c;单据以及材料进行销毁。一些重要的文件随着时间流逝&#xff0c;残破不全&#xff0c;因此&…

VC++编译MPIR 2.7.0

目录 第1章编译 2 1.1 简介 2 1.2 下载 3 1.3 解决方案 4 1.4 创建项目 5 1.5 复制文件树 6 1.6 不使用预编译头文件 8 1.7 包含目录 9 1.8 定义宏 10 1.9 编译前事件 11 1.10 修改 obj 的位置 13 1.11 编译yasm 14 1.12 编译汇编代码 …

导弹拦截

链接 分析&#xff1a;经典DP题&#xff0c;最长不下降子序列的变种&#xff0c;同时需要记录路径&#xff0c;用pre[]数组记录当前结点的前一个结点的方法很妙 1 #include "iostream"2 #include "cstdio"3 #include "cstring"4 #include "…

Spring中的@Cacheable开销

Spring 3.1引入了很棒的缓存抽象层 。 最后&#xff0c;我们可以放弃所有本地化的方面&#xff0c;装饰器和污染我们与缓存相关的业务逻辑的代码。 从那时起&#xff0c;我们可以简单地注释重量级方法&#xff0c;并让Spring和AOP机械完成工作&#xff1a; Cacheable("bo…

电工接线模拟仿真软件_VERICUT数控加工仿真软件,最强的数控加工模拟软件,你知道么?...

VERICUT数控加工仿真软件,最强的数控加工模拟软件VERICUT软件及功能简介1、VERICUT软件简介VERICUT是美国CGTech公司开发一款专业的数控加工仿真软件&#xff0c;是当前全球数控加工程序验证、机床模拟、工艺程序优化软件领域的领导者。该软件自1988年开始推向市场以来&#xf…

php数据库创建文件失败怎么回事,安装zblogPHP提示“创建c_option.php失败”解决方法...

有zblog用户反应在安装zblog的最后一步时提示“创建c_option.php失败”&#xff0c;如下图&#xff1a;本文来说明下这个问题的原因和解决办法。问题产生的原因&#xff1a;c_option.php是zblog的数据库配置文件&#xff0c;当安装完成的时候程序会自动创建这个文件。如果你的主…

CSS Variables

CSS原生变量(CSS自定义属性) 示例地址&#xff1a;https://github.com/ccyinghua/Css-Variables 一、css原生变量的基础用法 变量声明使用两根连词线"--"表示变量&#xff0c;"$color"是属于Sass的语法&#xff0c;"color"是属于Less的语法&a…

【基础中的基础】引用类型和值类型,以及引用传递和值传递

一直在博客园怼人&#xff0c;非常惭愧。所以郑重决定&#xff1a; 好好写一篇干货&#xff0c;然后再接着怼人。 这是一起帮上陈百万同学的求助&#xff0c;讲了一会之后&#xff0c;我觉得很有些普世价值&#xff0c;干脆就发到园子来。面向小白&#xff0c;高手轻拍。 我们从…

Java 7:使用NIO.2进行文件过滤–第3部分

大家好。 这是使用NIO.2系列进行文件过滤的第3部分。 对于那些尚未阅读第1 部分或第2部分的人 &#xff0c;这里有个回顾。 NIO.2是自Java 7起JDK中包含的用于I / O操作的新API。使用此新API&#xff0c;您可以执行与java.io相同的操作&#xff0c;以及许多出色的功能&#xf…

Hadoop Serialization -- hadoop序列化具体解释 (2)【Text,BytesWritable,NullWritable】

回想&#xff1a;回想序列化&#xff0c;事实上原书的结构非常清晰&#xff0c;我截图给出书中的章节结构&#xff1a;序列化最基本的&#xff0c;最底层的是实现writable接口&#xff0c;wiritable规定读和写的游戏规则 &#xff08;void write(DataOutput out) throws IOExce…

我需要多少个线程?

这取决于您的应用程序。 但是对于那些希望对如何从生产站点购买的所有昂贵内核中挤出更多资金的人来说&#xff0c;请多多包涵&#xff0c;我将阐明围绕多线程 Java应用程序的奥秘。 内容针对最典型的Java EE应用程序进行了“优化”&#xff0c;该应用程序具有Web前端&#xff…

H5网页适配 iPhoneX,就是这么简单

iPhoneX 取消了物理按键&#xff0c;改成底部小黑条&#xff0c;这一改动导致网页出现了比较尴尬的屏幕适配问题。对于网页而言&#xff0c;顶部&#xff08;刘海部位&#xff09;的适配问题浏览器已经做了处理&#xff0c;所以我们只需要关注底部与小黑条的适配问题即可&#…