单元测试技巧:创建描述性测试
您的单元测试应尽可能具有描述性。 他们给您的反馈应该非常清楚,您甚至不需要启动调试器并一步一步地检查代码来检查局部变量。 为什么? 因为那需要时间,而且我们很懒,对吗? 为此,您需要创建描述性测试。 有多种实现方法。 这是其中两个。
添加断言消息
通常可以将断言消息指定为测试断言中的附加参数,并且在该特定测试用例失败时,它们会作为失败消息出现。
例如,在jUnit中,您可以指定断言消息,例如:
assertEquals("The firstname of the two people should match if the clone was successful", "Fritz", person1.getFirstname());
另一方面,在MSTest中,必须将断言消息作为最后一个参数添加。
Assert.AreEqual("Fritz", person1.Firstname, "The firstname of the two people should match if the clone was successful");
注意 ,不要“过度设计”。 我将这些注释与其他代码注释类似地对待:如果它们添加了有意义的信息,则只需添加它们即可。 否则,它们就是浪费,因此就这样对待它们。
首选显式断言
我所说的显式断言的意思是对执行的操作使用正确的断言。 例如,如果您需要像前面提到的断言中那样执行相等性检查,请不要使用布尔断言语句。 (这里是一个虚拟的QUnit测试用例的示例)
test('Should correctly clone two people', 1, function(){//...ok(person1.firstname === 'Fritz', 'I expect both names to match if the clone operation succeeded');
});
…以及相应的结果在输出窗口中:
这个结果并不是真正的描述性…
结果没有告诉我们太多,对吧? 您可以说的是,此人的名字与您期望的名字不匹配,因此克隆操作可能不会成功。 但为什么?? 那它的实际价值是多少?
使用equals
代替:
test('Should correctly clone two people', 1, function(){//...equal(person1.firstname, 'Fritz', 'I expect both names to match if the clone operation succeeded');
});
……结果又是:
哦,看那里,有描述性的结果。
现在,此测试用例的结果更具描述性。 它不仅告诉您操作失败,而且还准确地向您显示了预期值和实际值。 这可能会立即提示您可能存在问题的地方。
翻译自: https://www.javacodegeeks.com/2013/06/unit-testing-tip-create-descriptive-tests.html
单元测试技巧:创建描述性测试相关推荐
- 项目描述_单元测试技巧:创建描述性测试
项目描述 您的单元测试应尽可能具有描述性. 他们给您的反馈应该非常清楚,您甚至不必启动调试器并一步一步地检查代码以检查局部变量. 为什么? 因为那需要时间,而且我们很懒,对吗? 为此,您需要创建描述性 ...
- 单元测试 问题描述_单元测试技巧:创建描述性测试
单元测试 问题描述 您的单元测试应尽可能具有描述性. 他们给您的反馈应该非常清楚,您甚至不必启动调试器,并一步一步地检查代码以检查局部变量. 为什么? 因为那需要时间,而且我们很懒,对吗? 为此,您需 ...
- 怎样编写测试类测试分支_测试技巧–不编写测试
怎样编写测试类测试分支 对此没有太多疑问,测试代码的方式是一个有争议的问题. 不同的测试技术由于各种原因(包括企业文化,经验和总体心理观点)而受到不同开发人员的青睐. 例如,您可能更喜欢编写经典的单元 ...
- 存根类 测试代码 java_为旧版代码创建存根-测试技术6
存根类 测试代码 java 任何阅读此博客的人都可能已经意识到,目前我正在开发一个项目,其中包含大量的旧代码,这些旧代码庞大,扩展且编写时从未进行过任何测试. 在使用此遗留代码时,有一个行为非常差的类 ...
- 测试技巧–不编写测试
对此没有太多疑问,测试代码的方式是一个有争议的问题. 不同的测试技术因各种原因(包括企业文化,经验和总体心理观点)而受到不同开发人员的青睐. 例如,您可能更喜欢编写经典的单元测试,通过检查返回值来单独 ...
- 为旧版代码创建存根–测试技术6
任何阅读此博客的人都可能已经意识到,目前我正在开发一个包含大量旧代码的项目,这些旧代码庞大,扩展且编写时从未进行过任何测试. 在使用此遗留代码时,有一个行为异常的类非常普遍,整个团队都一次又一次地犯错 ...
- Java单元测试技巧之PowerMock
简介: 高德的技术大佬向老师在谈论方法论时说到:"复杂的问题要简单化,简单的问题要深入化." 这句话让我感触颇深,这何尝不是一套编写代码的方法--把一个复杂逻辑拆分为许多简单逻辑, ...
- 单元测试技巧之PowerMock
前言 高德的技术大佬向老师在谈论方法论时说到:"复杂的问题要简单化,简单的问题要深入化." 这句话让我感触颇深,这何尝不是一套编写代码的方法--把一个复杂逻辑拆分为许多简单逻辑,然 ...
- Junit单元测试不支持多线程测试问题全解析
一.背景 今天@段段提出了一个很好的问题,她发现单元测试时如果开多个线程,主线程运行结束就结束了,并不会等待子线程结束. 如果用main方法就没问题,技术群里展开了激烈的讨论. 本文将"复现 ...
最新文章
- java.lang.Thread使用及总结
- 太强啦!一个普通摄像头就让二次元老婆“活”了过来!
- P4597 序列sequence
- api数据加密的定义_API 设计基础规范
- 作者:唐华(1973-),男,华南师范大学软件学院院长助理、副教授。
- 基于centos6.5安装ElasticSearch
- string 常用函数
- python apk fr_Python fr包_程序模块 - PyPI - Python中文网
- 收听NSNotificationCenter发出的通知
- iOS-UI分析利器--Reveal安装破解以及简单使用
- php 页面执行时长
- Atitit 知识管理之 经济学概论 attilax 学习心得
- 华为手机桌面计算机消失怎么办,华为手机桌面所以图标不见了怎么办
- 创建CrossApp工程
- 构筑城市生命线:应急管理需要新思路,全域能力成关键
- 更改Windows的鼠标滚动方式为Mac方式(win鼠标滚轮反向)
- 2021年安全员-A证(江西省)新版试题及安全员-A证(江西省)考试试卷
- 国内外快递公司名称一览表
- python妹子图爬虫5千张高清大图突破防盗链福利5千张福利高清大图
- Google浏览器打开新页面会覆盖当前页面的问题(打开新页面)
热门文章
- ubuntu 13.04 mysql_Ubuntu13.04 下MySQL5.6安装过程
- 转:聊聊开发中幂等性问题(*)
- think-in-java(9)接口
- Eclipse系列的隐藏宝藏– 2019年版
- 常用jdk的命令行工具:_jhsdb:JDK 9的新工具
- 通过通用数据访问扩展AWS生态系统
- db2分页sql_停止尝试使用内部DB框架模拟SQL OFFSET分页!
- Java Spring Security示例教程中的2种设置LDAP Active Directory身份验证的方法
- spring 构造函数注入_Spring构造函数注入和参数名称
- 如何在Java地毯下有效地清除问题