在上一篇文章中 ,我写了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()方法对于要声明为相等的“期望”和“实际”参数都有非常特定的数据类型,但是有一个版本可以接受两个对象,这意味着两个不同类型的参数不可能被认为是“相等”的方法仍然可以传递给该方法。 编译器无法阻止这种情况,但是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

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

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

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

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

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

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

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

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

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

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

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

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

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

  7. 嵌入式linux更省电,基于嵌入式Linux的智能手机省电设计方案-消费电子-与非网

    每个系统要正常运行都有赖于CPU 的性能, 系统软件, 中间件一集各种系统策略等等, 智能手机也是一样.这篇文章主要探讨了给智能手机选择合适的CPU, 以及在手机电源管理中的动态电源管理(DPM) 和 ...

  8. 让问答更自然:基于拷贝和检索机制的自然答案生成系统研究

    论文作者 | 何世柱.刘操.刘康.赵军(自动化所&中科院大学) 特约记者 | 王哲(中国科学技术大学) 让机器像人类一样拥有智能是研究人员一直以来的奋斗目标.由于智能的概念难以确切定义,图灵提 ...

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

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

最新文章

  1. rethat linux安装nginx,RedHat和CentOS下Nginx安装
  2. 普通程序员如何转向AI方向(转)
  3. redis学习之常用数据类型
  4. android phone驱动_[基础知识] 将 OneDrive 同步到 SD 卡等外部驱动器
  5. MySQL性能优化的21个最佳实践
  6. java nio.Buffer的属性变化
  7. CentOS下安装Hbase
  8. 可汉学院python_可汗学院离线版本
  9. Acer 4750 安装黑苹果_安装黑苹果,你需要注意哪几点
  10. Joseph UVA 1452 Jump
  11. 使用maven给spring项目打可直接运行的jar包(配置文件内置外置的打法)
  12. mysql 关联查询速度慢 (解决)
  13. 4月13日云栖精选夜读:雪佛兰和阿里妈妈撒红包雨!到店率增加20%是如何做到的?...
  14. FCC-函数式编程:使用 reduce 方法分析数据
  15. 饿了么组件el-image使用本地图片
  16. Gmail邮箱怎么获取授权码?熟悉一下
  17. Node.js及npm安装详细教程
  18. 邮件客户端 web linux,Linux下五个流行的Webmail
  19. SketchUp二次开发之鼠标工具
  20. 【小工具】- linux如何查看内存硬件信息(包含卡槽数量和每块内存条参数)

热门文章

  1. 2-6 基于SpringBoot的SpringSecurity环境快速搭建与验证
  2. 语言 高速公路超速处罚_重磅!全国高速将统一限速,这4种超速不再扣分罚款!【饮茶论道】...
  3. php js 验证码,js实现验证码的方法
  4. excel趋势线公式导出_如何用Excel进行预测分析?
  5. jvm高级特性第4章-虚拟机性能监控与故障处理工具
  6. 实现模糊查询并忽略大小写
  7. micrometer_具有InlfuxDB的Spring Boot和Micrometer第3部分:Servlet和JDBC
  8. java 8 新功能详解_Java 8和Java 14之间的新功能
  9. spring序列化_使用@JsonIdentityInfo的Spring自定义序列化器
  10. java message_Java Message System简介