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

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标记了两个有问题的单元测试断言语句。

orderParametersAssertEqualsIncorrect

parametersAssertEqualsInconvertibleTypes

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

orderParametersPickyAboutDetection

最后显示的屏幕快照表明,在语句中直接访问这些值的情况下,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

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

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

相关文章

【MATLAB函数系列】fskmod函数参数及源代码详解

关注回复【fskmod】可看 在用matlab仿真生成fsk信号时,发现matlab库提供fskmod函数可以直接生成fsk信号,但生成的信号为复信号,于是查看其源码,结果对其原理看了好久都没明白,在网上查询资料也少得可怜,唯一…

Java Spring Security示例教程中的2种设置LDAP Active Directory身份验证的方法

LDAP身份验证是全球范围内最流行的企业应用程序身份验证机制之一,而Active Directory (Microsoft针对Windows的LDAP实现)是另一种广泛使用的LDAP服务器。 在许多项目中,我们需要通过登录屏幕中提供的凭据使用LDAP对活动目录进行身…

【各种信噪比联系与区别详解】实信号、复信号Es、N0、符号信噪比EsN0、带内信噪比、比特信噪比EbN0、SNR的含义及关系详解

引言 关于EsN0、EbN0与SNR三者关系的描述,在MATLAB帮助文档中搜索词条“AWGN Channel”有比较详细的描述,但有些细节没有讲清楚。 简单翻译解释一下,就是 SNR表示每个采样点的信号噪声比。EbN0表示每个比特能量与噪声功率谱密度的比值。EsN0表示每个符号能量与噪声功率谱密…

非科班Java尝试全国高校计算机能力挑战赛第三届计挑赛

写在前面:①大佬勿在意,小打小闹!②若不决参加与否,希望下文可以给你帮助(仅限程序设计赛项)。 文章目录一、个人真实情况二、比赛最细简介三、最全参赛准备四、比赛时候遇到不会做怎么办?一、个…

加密数据的检索_透明地持久保存并从数据库中检索加密的数据

加密数据的检索自从我在这里发表上一个帖子以来已经有两个多月了,但是今年六月和七月非常忙碌而密集。 首先, Confitura的组织(欧洲最大的Java开发人员免费会议)参加了我所有的免费晚会,然后在相当紧张的住院期间&…

微信小程序云开发日记类日记记录分享动态

微信公众号:创享日记(微信号csds992022) 发送关键词:日记类小程序 免费获取源码 1 概述 1.1 关于本手册 为了使您对研岸日记记录社交软件的使用有清晰详尽的了解,特此编写《用户手册》,为了保障您的利益&a…

Windows编程初步(三)【说明:有敏感字眼已全删,不知道为啥还审核不通过】

第三节 设计输出及利用在线帮助 在Windows中,消息ON_PAINT是专门用来处理输出的。基本所有的输出代码应放在这里。 。其输出方式不再限于从上往下,而是全屏可控,因此每个输出都需要告知系统输出位置。典型的文字输出代码是TextOut函数。 将…

408考研数据结构复习-时间复杂度与空间复杂度-附统考真题

文章目录一、时间复杂度二、空间复杂度三、相关题目一、时间复杂度 一个语句的频度是指该语句在算法中被重复执行的次数。算法中所有语句的频度之和记为T(n),它是该算法问题规模n的函数,时间复杂度主要分析T(n)的数量级。算法中基本运算(最深…

解调去载波后均衡信道与实际信道的关系

关注公号【逆向通信猿】更精彩!!! 通常,信号经过调制后发送,会经过信道作用,示意图可以表示为 其中 x ( t ) x(t) x(t)为基带信号, e

第十二届蓝桥杯省赛A组试题:左儿子右兄弟Java

【问题描述】 对于一棵多叉树,我们可以通过 “左孩子右兄弟” 表示法,将其转化成一棵二叉树。如果我们认为每个结点的子结点是无序的,那么得到的二叉树可能不唯一。换句话说,每个结点可以选任意子结点作为左孩子,并按任…

activiti脚本任务_Activiti中的高级脚本:自定义配置注入

activiti脚本任务脚本任务可能是Activiti代码库中“最古老的”类之一,但是我认为它仍然未被许多人使用。 (感知到的)缺点当然是性能(解释还是编译),并且从IDE角度来看支持较少。 但是,好处&…

【锁相环系列3】QPSK+基带+Costas锁相环载波同步(重点环路滤波器参数设置和迭代核心代码详解)

引言 假设在QPSK信号解调中,完成匹配滤波、定时抽样后的星座如下所示 而画出基带信号部分点的星座图如下所示 由以上两幅图可以看出,基带信号中还存在微小的频偏,导致星座图旋转,而这种微小的频偏很难通过FFT估计出来,由此想到了用锁相环解决,锁相环锁定后的星座如下 …

线性移位寄存器序列(m序列)之MATLAB实现

移位寄存器的结构 nnn级线性移位寄存器的结构如下图 当生成多项式g(x)g(x)g(x)为本原多项式时,产生的序列为m序列。例如 g(x)x5x21g(x)x^5x^21g(x)x5x21的本原多项式,初态为10000的5级m序列,其周期为25−1312^5-13125−131,结构如…

scala和java像不像_关于Java和Scala同步的五件事你不知道

scala和java像不像实际上,所有服务器应用程序都需要在多个线程之间进行某种同步。 大多数同步工作是在框架级别为我们完成的,例如通过我们的Web服务器,数据库客户端或消息传递框架。 Java和Scala提供了许多组件来编写可靠的多线程应用程序。 …

BPSK调制下(2,1,6)标准卷积码及打孔生成2/3、3/4、4/5、5/6删余码Viterbi译码误码率曲线图(MATLAB实现)

关注公号【逆向通信猿】更精彩!!! 目录 仿真结果卷积码原理图删余后性能比较常用的删余码仿真代码根据码率生成打孔参数(子函数)将标准(2, 1, 6)编码后的序列进行打孔,生成删余码(子函数)对接收到的序列进行反打孔,将原来打孔删除的比特进行补零(子函数)BPSK调制下(2,1,6…

江南大学物联网工程学院数据库课程实验三作业3vb.net实验报告

一、开发环境 语言环境:Microsoft.NET Framework 4.6 SDK IDE:Microsoft Visual Studio Community 2015 二、代码及配置 1、Form1 Public Class Form1Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.LoadEnd SubPrivate …

[2021.07.25更新]循环冗余校验(CRC)的MATLAB实现

欢迎同步关注公众号【逆向通信猿】 CRC校验(循环冗余校验) 在计算CRC校验的时候,发现一个网站如下 http://www.ip33.com/crc.html 于是,想自己动手实现该网站计算CRC校验的功能,网站提供的在线计算工具是以十六进制来表示输入参数和结果的,为了方便MATLAB实现,本文提供…

江南大学物联网工程学院数据库课程实验四作业4vb.net实验报告

一、开发环境 语言环境:Microsoft.NET Framework 4.6 SDK IDE:Microsoft Visual Studio Community 2015 二、代码 Imports System.Data.SqlClient Public Class Form1 连接本机数据库并获取test_one数据库中的sc表数据 Dim mybind As BindingManagerB…

MATLAB库函数hilbert(希尔伯特变换)的C语言实现(FFT采用FFTW库)

目录希尔伯特变换原理公式MATLAB官方帮助文档中希尔伯特变换算法常量和结构体定义C语言实现(FFTW库的float版,double版类似)希尔伯特变换原理公式 MATLAB官方帮助文档中希尔伯特变换算法 hilbert uses a four-step algorithm: Calculate the FFT of the input sequ…

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

netbeans7.4有许多例子说明Java异常处理可能比首次出现时要困难得多,Josh Bloch专门将一整章的《 Effective Java》 (两个版本)专门用于异常处理。 Java中的检查异常模型 仍然 “ 有争议” 。 我很高兴看到我最近下载的NetBeans 7.4 beta有一…