junit:junit_JUnit和Hamcrest:在assertEquals上进行改进

junit:junit

在我的博客文章中,Java越来越接受静态导入吗? 在本文中,我讨论了在Java中越来越多地使用静态导入来使代码在某些情况下更加流畅。 Java中的 单元测试特别受静态导入的影响,在此博客文章中,我提供了一个简单的示例,说明如何使用静态导入来使用JUnit和Hamcrest进行更流畅的单元测试。

下一个代码清单是一个简单的IntegerArithmetic类,它具有一个需要进行单元测试的方法。

IntegerArithmetic.java

package dustin.examples;/*** Simple class supporting integer arithmetic.* * @author Dustin*/
public class IntegerArithmetic
{/*** Provide the product of the provided integers.* * @param integers Integers to be multiplied together for a product.* @return Product of the provided integers.* @throws ArithmeticException Thrown in my product is too small or too large*     to be properly represented by a Java integer.*/public int multipleIntegers(final int ... integers){int returnInt = 1;for (final int integer : integers){returnInt *= integer;}return returnInt;}
}

接下来显示测试上述方法的一个方面的一种通用方法。

/*** Test of multipleIntegers method, of class IntegerArithmetic, using standard* JUnit assertEquals.*/@Testpublic void testMultipleIntegersWithDefaultJUnitAssertEquals(){final int[] integers = {2, 3, 4 , 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};final int expectedResult = 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 *13 * 14 * 15;final int result = this.instance.multipleIntegers(integers);assertEquals(expectedResult, result);}

在上面显示的相当典型的单元测试示例中,由于org.junit.Assert。*的静态导入(未显示),因此能够流畅地调用JUnit的assertEquals 。 但是,最新版本的JUnit( JUnit 4.4+ )已经开始包括Hamcrest核心匹配器,这可以进行更流畅的测试,如下一个代码片段所示。

/*** Test of multipleIntegers method, of class IntegerArithmetic, using core* Hamcrest matchers included with JUnit 4.x.*/@Testpublic void testMultipleIntegersWithJUnitHamcrestIs(){final int[] integers = {2, 3, 4 , 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};final int expectedResult = 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 *13 * 14 * 15;final int result = this.instance.multipleIntegers(integers);assertThat(result, is(expectedResult));}

在此示例中,JUnit的assertThat (自JUnit 4.4起也可作为org.junit.Assert.*的静态导入的一部分)与随附的Hamcrest核心匹配器is()结合使用。 这当然是一个问题,但是我更喜欢第二种方法,因为它对我来说更具可读性。 断言某些东西(结果)比其他方法(预期的)似乎更易读,更流利。 记住使用assertEquals时先列出预期结果还是实际结果有时会很棘手,结合使用assertThat和is()可以减少我编写和读取测试时的工作。 欢迎减少工作量,尤其是乘以大量测试时。

参考:在Inspired by Actual Events博客上,我们的JCG合作伙伴 Dustin Marx 与JUnit和Hamcrest一起改进assertEquals 。


翻译自: https://www.javacodegeeks.com/2012/05/junit-and-hamcrest-improving-on.html

junit:junit

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

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

相关文章

java 语音匹配,java-语音识别,是否可以通过正则表达式确定用户所说的内容?

通常,我建议您为返回的每个单词生成一个Soundex,将您要查找的单词的Soundexes对整个列表评分,作为匹配的一部分字符,并使用这些评分来确定哪个单词更可能成为比赛.例如,开始编码为S363,停止编码为S310.下表根据单词的百分比对匹配的单词进行评分:Word Soundex S363 …

vue.js 2.x 能否设置某个组件不被keep-alive 的解决方案

开发项目的时候&#xff0c;使用的是 vue 2.x 版本 搭配路由切换 vue-router &#xff0c;但是很多时候有些页面需要被缓存&#xff0c;有些页面不需要缓存&#xff0c;那么该如何进行一个处理 这里我使用了一个方案来解决这个问题 : 首先在入口页面进行全部缓存标签 即 <ke…

JWT –生成和验证令牌–示例

JWT提供了一种非常有趣的方式来表示可以验证和信任的应用程序之间的声明。 我的目标是展示一个小的样本&#xff0c;它使用出色的Nimbus JOSE JWT库来生成和验证令牌。 总览 进行介绍的最佳地点之一是这里 。 简而言之&#xff0c;要从jwt.io网站的资料中借用&#xff0c;声明…

无表头单链表的总结----输出链表

#include"head.h" void print(struct Student* head) {struct Student *p;printf("There are %d records:\n", sum);p head;if (p ! NULL){do{printf("%ld %d\n", p->num, p->score);p p->next;} while (p ! NULL); //以链表结尾的…

matlab 次坐标轴 标注,matlab标注坐标轴

matlab绘图如何添加图例/坐标轴刻度像这个图里的 那样的图例如何添加 还有坐标轴的刻度如何用像上图的序号 首先打开电脑上的“matlab”软件&#xff0c;主界面如下图所示&#xff0c;箭头处输入代码即可运行。下面输入代码绘制图像&#xff0c;命令行代码如下图所示。点击ente…

JQUERY操作html--获取和设置内容、属性、回调函数

一&#xff1a;jQuery - 获取内容和属性 1.获得内容 - text()、html() 以及 val() text() - 返回所选元素的文本内容 html() - 返回所选元素的内容&#xff08;包括 HTML 标记&#xff09; <script type"text/javascript" src"jquery-1.11.2.min.js">…

scala使用java类_使用Java和Scala将Play Framework 2应用程序部署到Openshift

scala使用java类几个星期&#xff0c; 马克阿特伍德 &#xff08; Mark Atwood&#xff09; &#xff0c; 豪尔赫艾利斯 &#xff08; Jorge Aliss &#xff09;和我塞巴斯蒂安 斯卡塔诺 &#xff08; SebastinScarano&#xff09;参加了红帽网络研讨会LETS PLAY&#xff01; 在…

matlab13节点线路模型,13节点配电网的建模与仿真.doc

..大学生课外创新实验竞赛总结报告项目简介&#xff1a;在配电网的正常运行中&#xff0c;随着用电负荷的变化和系统运行方式的改变&#xff0c;网络中的损耗也将发生变化。要严格保证所有的用户在任何时刻都有额定的电压是不可能的&#xff0c;因此配电网的某个节点电压偏移额…

C语言 · 未名湖边的烦恼

问题描述每年冬天&#xff0c;北大未名湖上都是滑冰的好地方。北大体育组准备了许多冰鞋&#xff0c;可是人太多了&#xff0c;每天下午收工后&#xff0c;常常一双冰鞋都不剩。每天早上&#xff0c;租鞋窗口都会排起长龙&#xff0c;假设有还鞋的m个&#xff0c;有需要租鞋的n…

可视化Java 9模块关系

正如我在之前的文章中所述 &#xff0c;我已经在Java 9 Jigsaw构建上运行Eclipse Neon了一段时间&#xff0c;并且没有任何问题。 我在周末花费了几个小时来修改一些模块化工具的想法。 我为Eclipse Neon写了一个小插件&#xff0c;可视化了各个模块之间的连接。 现在的实现…

matlab怎么整合成一个模块,Matlab如何将m文件制定成模块

代码拷过去&#xff01;可以运行了&#xff0c;记得参数设置界面什么也不用加&#xff01;初始输入记得加入&#xff0c;不然你的S模块会报错&#xff0c;因为你有个reallog函数&#xff01;function [sys,x0,str,ts] guangfu(t,x,u,flag)switch flag,case 0,[sys,x0,str,ts]m…

使用EF Oracle实现DevExpress绑定大数据的ServerMode模式

前提&#xff1a;需要引入EntityFramework组件&#xff0c;注意几个使用点后使用上其实比较简单。 一、引入Oracle EF支持组建 1、可手动引入附件中的DLL&#xff08;需手动合并web.config配置&#xff09; 2、也可使用NuGet的安装方式&#xff0c;安装时会自动合并配置到web.c…

String Start!

(1)Ransom Note 解题思路&#xff1a; 题目叫做Ransom Note&#xff0c;勒索信。勒索信&#xff0c;为了不暴露字迹&#xff0c;就从杂志上搜索各个需要的字母&#xff0c;组成单词来表达的意思。这样来说&#xff0c;题目也就清晰了&#xff0c;判断杂志上的字是否能够组成勒索…

matlab产生m序列,matlab生成m序列的函数

原来那个效率太低&#xff0c;主要是因为实际应用并不需要生成太长的m序列&#xff0c;加入了需求长度&#xff0c;能有效减少运行时间。25级的移位寄存器&#xff0c;运行了一个小时都没有出来一周期&#xff0c;我仅仅需要三千bit而已。改进版&#xff1a;function [seq]mseq…

mac memcached_Mac OS X上的Java Memcached

mac memcached介绍 在本文中&#xff0c;我将解释如何&#xff1a; 在Mac OS X上安装和配置Memcached 在Java应用程序中使用Memcached 我不会过多地介绍在您的应用程序中使用分布式缓存的好处&#xff0c;但至少让我们提供一些在企业门户&#xff08;在我的情况下为eXo平台&…

json日期转换

//调用 ChangeDateFormat(CreatTime) //json日期转换 function ChangeDateFormat(jsondate) { jsondate jsondate.replace("/Date(", "").replace(")/", ""); if (jsondate.indexOf("") > 0) { jsondate jsondate.subs…

物料分拣系统matlab仿真,自动物料分拣机器人控制系统设计+Matlab源程序+图纸

自动物料分拣机器人控制系统设计Matlab源程序图纸时间:2019-07-12 22:29来源:毕业论文在设计中各个极限位置都会设置有传感器来作为边界的报警信号。以此来防止将会因为智能控制的错误带来的危险的事故。而本课题带来的设计是简而言之就是使用虚拟样机技术在虚拟设计总说明&…

JBoss EAP 7快速入门

现在&#xff0c; 最新的Red Hat JBoss企业应用平台7的beta版已经发布&#xff0c;现在是时候探索可用的Java EE 7 快速入门并使用JBoss Developer Studio &#xff08;JDBS&#xff09;部署您的第一个应用程序了。 快速入门演示了JBoss EAP&#xff0c;Java EE 7和一些其他技…

java instantiation,Instantiation of List (Java)

动机今天刷Leetcode时碰到的一道问题(216. Combination Sum III)&#xff1a;Find all possible combinations of k numbers that add up to a number n, given that only numbers from 1 to 9 can be used and each combination should be a unique set of numbers.给出的func…

Linux基础练习题(二)

Linux基础练习题(二) 1、复制/etc/skel目录为/home/tuer1&#xff0c;要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [rootwww ~]# cp -r /etc/skel/ /home/tuser1 [rootwww ~]# chmod -R 600 /home/tuser1/ 2、编辑/etc/group文件&#xff0c;添加组hado…