netbeans7.4

在上一篇文章中 ,我写了NetBeans 7.4 beta中提供的提示 ,这些提示提高了开发人员避免Java异常处理带来的讨厌的运行时问题的能力。 在本文中,我将探讨如何使用NetBeans 7.4 beta提供的另外两个提示使单元测试在执行单元测试期间更加正确和清晰。 这些是“ Assert.assertEquals的不可转换参数”和“ Assert.assertEquals的参数顺序错误”提示。

就我从轶事证据和与其他Java开发人员的交谈中所知,JUnit仍然是Java环境中使用最广泛的单元测试框架。 这些大多数JUnit用户都非常熟悉JUnit的Assert类及其许多重载的assertEquals方法。 NetBeans 7.4 beta现在提供了两个提示,以使更容易适当地使用这些assertEquals方法。

尽管许多Assert.assertEquals()方法对于要声明为相等的“期望”和“实际”参数具有非常特定的数据类型,但是有一个版本接受两个Object,这意味着两个不同类型的参数不可能被认为“相等”的方法仍可以传递给该方法。 编译器无法阻止这种情况,但是NetBeans 7.4 beta包含了“ Assert.assertEquals的不可转换参数”提示来解决该特定情况。 没有这样的提示,一个人更有可能直到他或她运行JUnit测试并看到失败的断言时才意识到自己的错误。

我在使用JUnit时遇到的最常见问题之一(也是我喜欢Hamcrest的流畅API 的原因之一 )是,我似乎无法确切地记住assertEquals方法的参数顺序。 通过猜测,我有50/50的几率是正确的。 诸如NetBeans之类的现代Java IDE在编写新的JUnit代码时有很大帮助,因为它们的方法完成功能将指示首先指定“ expected”参数,然后指定“ actual”参数。 更常见的是,这是在读取代码而不是编写代码时出现的问题,因为没有方法完成可以帮助我读取代码。 NetBeans 7.4 beta通过突出显示我通过“ Assert.assertEquals参数的错误顺序”提示混淆了参数顺序的情况来解决此问题。 启用该提示(默认情况下为默认),我可以在运行时甚至在没有方法完成的情况下快速识别出乱序的参数。

上面讨论的两个提示都可以在非常简单的单元测试类中进行演示。

CalculatorTest.java的一部分

/*** Test Calculator.sum(int ...).*/
@Test
public void TestSumIntegers()
{final Calculator calculator = new Calculator();Assert.assertEquals(calculator.add(1, 2, 3, 4, 5), 15);Assert.assertEquals("15", calculator.add(1, 2, 3, 4, 5));
}

上面的单元测试方法正在测试的代码对于此讨论并不重要。 相反,重点是在两种情况下使用Assert.assertEquals 。 上面显示的两种情况都是不正确的,并强制演示了前面讨论的两个NetBeans提示。 断言两个对象相等的第一次尝试是将参数按错误的顺序放置。 应该首先列出“预期”值(硬编码为15),然后是由测试方法计算出的“实际”值。 断言两个对象相等的第二次尝试将始终失败,因为类型不匹配:第一个参数是String,第二个参数是整数。 在这两种情况下,单元测试代码都会毫无疑问地进行编译。 但是,在运行单元测试时,这两个断言总是会失败。 实际上,这些测试结果可能会无意间被解释为正在测试的代码的问题,直到有人更深入地查看测试失败为止。

接下来的两个屏幕快照演示了NetBeans 7.4 beta标记了两个有问题的单元测试断言语句。

关于“ Assert.assertEquals参数的顺序不正确”提示,有一点需要注意。 当断言语句类似于我的示例中所示的语句时,它会很好地工作:提供一个硬编码的期望值作为“实际”值,以及一个明显的计算值作为“期望”值。 下一个屏幕快照说明了这一点。 提示仅标记了我之前显示的语句,即使顺序不正确,也未标记其他将实际与预期进行比较的方法。

最后显示的屏幕快照表明,在语句中直接访问这些值的情况下,NetBeans提示只能检测到错误的assertEquals参数顺序(应该在实际值之前预期,而不是在实际值之前预期)。为第一个[expected]参数执行,并为第二[actual]参数提供预期的硬编码值)。

本博客文章中涉及的两个提示使使用常用的JUnit Assert.assertEquals方法更容易发现问题,这些问题只有在没有提示的情况下分析单元测试运行结果才可能被发现。 尽管这些提示警告开发人员的两个问题通常都非常容易检测和修复,但是与NetBeans IDE在运行测试之前告诉您它们是错误的相比,检测和修复这些问题仍然更加困难且耗时。

参考:来自NetBeans 7.4 beta的基于JUnit的更好的单元测试,来自我们的JCG合作伙伴 Dustin Marx, 来自Inspired by Actual Events博客。

翻译自: https://www.javacodegeeks.com/2013/09/better-junit-based-unit-tests-with-netbeans-7-4-beta-hints.html

netbeans7.4

netbeans7.4_使用NetBeans 7.4 beta提示进行更好的基于JUnit的单元测试相关推荐

  1. 使用NetBeans 7.4 beta提示进行更好的基于JUnit的单元测试

    在上一篇文章中 ,我写了NetBeans 7.4 beta中提供的提示 ,这些提示提高了开发人员避免Java异常处理带来的讨厌的运行时问题的能力. 在本文中,我将研究如何使用NetBeans 7.4 ...

  2. NetBeans 7.4 Beta提示警告无效的异常处理

    有许多例子说明Java异常处理可能比首次出现时要困难得多,Josh Bloch专门将一整章的< Effective Java> (两个版本)专门用于异常处理. Java中的检查异常模型 仍 ...

  3. netbeans7.4_带有NetBeans 7.1 RC 2的快速入门WebLogic 12c

    netbeans7.4 WebLogic服务器12c停运了几天. 它适用于"裸"的Java开发人员-精美的Fusion Middleware东西将继续沿线升至12c. 因此,这基本 ...

  4. netbeans7.4_NetBeans 7.4 Beta提示警告无效的异常处理

    netbeans7.4 有许多例子说明Java异常处理可能比首次出现时要困难得多,Josh Bloch专门将一整章的< Effective Java> (两个版本)专门用于异常处理. Ja ...

  5. netbeans7.4_NetBeans 7.1:创建自定义提示

    netbeans7.4 我已经在帖子中对我最喜欢的NetBeans提示进行了讨论,这些帖子中包含用于现代化Java代码的七个NetBeans提示和七个不可或缺的NetBeans Java提示 . 这两 ...

  6. NetBeans 7.2 beta:更快,更有用

    NetBeans 7.2的beta版本引起了极大的兴奋. 在本文中,我将简要介绍一下此版本令人兴奋的原因(包括更好的性能,提供更多的提示以及集成FindBugs). NetBeans 7.2 beta ...

  7. 使用FlexBox和Json实现类似ComboBox(类似Google的输入提示和自动)功能-基于JQuery-ASP.NET...

    很久没写代码了,也很久不写技术文了,不知道该从何写起,本文将会有点乱,请见谅. 本文的内容是要实现一个类似ComboBox的功能,也可以说是类似Google的输入提示和自动完成,其实这样的文章网上也不 ...

  8. html页面顶部提示在更高浏览器下面提示语

    2019独角兽企业重金招聘Python工程师标准>>> html代码: <div class="ie-tips"> 您使用的浏览器版本过旧,为了更好的 ...

  9. 软件测试课堂练习题答案 中国大学mooc

    软件测试课堂练习题 第1单元测试 以下描述中哪个是错误的: A. 静态测试不需要搭建测试环境 B. 测试用例的基本组成包括:输入.预期输出和测试环境 C. 穷尽测试是一种非常有效的测试手段 D. 测试 ...

最新文章

  1. oracle 获得月最后一天,oracle获取本月第一天和最后一天及Oracle trunc()函数的用法...
  2. Presto内存管理源码分析
  3. 菜鸟学SSH(十五)——简单模拟Hibernate实现原理
  4. 关于数据分析:你想知道的都在这里!
  5. oracle中闪回和回滚,oracle闪回操作详解
  6. 为什么每天感觉没精神
  7. Java 基础——数组解析
  8. hdu 4665 搜索
  9. ceph command returned non-zero exit status: 1
  10. 推荐几款免费的MacOS/MacBook pro/MacBook air读取NTFS格式磁盘软件(完全免费)
  11. php函数改变图片大小,php实现修改图片大小的方法
  12. #微软MVP分享# WP手机使用记录
  13. java 远程视频监控系统_基于android的远程视频监控系统 附完整源码
  14. 计算机管理怎么分硬盘,电脑磁盘空间划分_电脑磁盘分区怎么分
  15. Handler简单介绍
  16. Apache Thrift 官方JAVA教程
  17. 白天看投影仪哪个牌子最好?家用投影仪推荐一下哪款比较好
  18. 微软 2021 秋季发布会汇总
  19. IP地址划分时192.168.1.0/24含义是什么
  20. Kubectl :--v 接口调试,以及设置日志输出详细程度

热门文章

  1. 2017西安交大ACM小学期 敏感词汇[AC自动机]
  2. MySQL avg()函数
  3. 零配置 之 Spring注解实现Bean定义
  4. Oracle入门(三A)之sqlplus
  5. Tengine-Ngnix高级版
  6. 全球如何保证区块生成是匀速的?
  7. ArrayList如何对某个对象的日期属性排序?
  8. java通过commons-fileupload实现多张图片的上传(servlet)
  9. JsonData响应工具类封装
  10. break VS continue