您的单元测试应尽可能具有描述性。 他们给您的反馈应该非常清楚,您甚至不需要启动调试器并一步一步地检查代码来检查局部变量。 为什么? 因为那需要时间,而且我们很懒,对吗? 为此,您需要创建描述性测试。 有多种实现方法。 这是其中两个。

添加断言消息

通常可以将断言消息指定为测试断言中的附加参数,并且在该特定测试用例失败时,它们会作为失败消息出现。

例如,在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');
});

……结果又是:

哦,看那里,有描述性的结果。

现在,此测试用例的结果更具描述性。 它不仅告诉您操作失败,而且还准确地向您显示了预期值和实际值。 这可能会立即提示您可能存在问题的地方。

参考: 单元测试提示:在Juri Strumpflohner的TechBlog博客上,由我们的JCG合作伙伴 Juri Strumpflohner 创建描述性测试 。

翻译自: https://www.javacodegeeks.com/2013/06/unit-testing-tip-create-descriptive-tests.html

单元测试技巧:创建描述性测试相关推荐

  1. 项目描述_单元测试技巧:创建描述性测试

    项目描述 您的单元测试应尽可能具有描述性. 他们给您的反馈应该非常清楚,您甚至不必启动调试器并一步一步地检查代码以检查局部变量. 为什么? 因为那需要时间,而且我们很懒,对吗? 为此,您需要创建描述性 ...

  2. 单元测试 问题描述_单元测试技巧:创建描述性测试

    单元测试 问题描述 您的单元测试应尽可能具有描述性. 他们给您的反馈应该非常清楚,您甚至不必启动调试器,并一步一步地检查代码以检查局部变量. 为什么? 因为那需要时间,而且我们很懒,对吗? 为此,您需 ...

  3. 怎样编写测试类测试分支_测试技巧–不编写测试

    怎样编写测试类测试分支 对此没有太多疑问,测试代码的方式是一个有争议的问题. 不同的测试技术由于各种原因(包括企业文化,经验和总体心理观点)而受到不同开发人员的青睐. 例如,您可能更喜欢编写经典的单元 ...

  4. 存根类 测试代码 java_为旧版代码创建存根-测试技术6

    存根类 测试代码 java 任何阅读此博客的人都可能已经意识到,目前我正在开发一个项目,其中包含大量的旧代码,这些旧代码庞大,扩展且编写时从未进行过任何测试. 在使用此遗留代码时,有一个行为非常差的类 ...

  5. 测试技巧–不编写测试

    对此没有太多疑问,测试代码的方式是一个有争议的问题. 不同的测试技术因各种原因(包括企业文化,经验和总体心理观点)而受到不同开发人员的青睐. 例如,您可能更喜欢编写经典的单元测试,通过检查返回值来单独 ...

  6. 为旧版代码创建存根–测试技术6

    任何阅读此博客的人都可能已经意识到,目前我正在开发一个包含大量旧代码的项目,这些旧代码庞大,扩展且编写时从未进行过任何测试. 在使用此遗留代码时,有一个行为异常的类非常普遍,整个团队都一次又一次地犯错 ...

  7. Java单元测试技巧之PowerMock

    简介: 高德的技术大佬向老师在谈论方法论时说到:"复杂的问题要简单化,简单的问题要深入化." 这句话让我感触颇深,这何尝不是一套编写代码的方法--把一个复杂逻辑拆分为许多简单逻辑, ...

  8. 单元测试技巧之PowerMock

    前言 高德的技术大佬向老师在谈论方法论时说到:"复杂的问题要简单化,简单的问题要深入化." 这句话让我感触颇深,这何尝不是一套编写代码的方法--把一个复杂逻辑拆分为许多简单逻辑,然 ...

  9. Junit单元测试不支持多线程测试问题全解析

    一.背景 今天@段段提出了一个很好的问题,她发现单元测试时如果开多个线程,主线程运行结束就结束了,并不会等待子线程结束. 如果用main方法就没问题,技术群里展开了激烈的讨论. 本文将"复现 ...

最新文章

  1. java.lang.Thread使用及总结
  2. 太强啦!一个普通摄像头就让二次元老婆“活”了过来!
  3. P4597 序列sequence
  4. api数据加密的定义_API 设计基础规范
  5. 作者:唐华(1973-),男,华南师范大学软件学院院长助理、副教授。
  6. 基于centos6.5安装ElasticSearch
  7. string 常用函数
  8. python apk fr_Python fr包_程序模块 - PyPI - Python中文网
  9. 收听NSNotificationCenter发出的通知
  10. iOS-UI分析利器--Reveal安装破解以及简单使用
  11. php 页面执行时长
  12. Atitit 知识管理之 经济学概论 attilax 学习心得
  13. 华为手机桌面计算机消失怎么办,华为手机桌面所以图标不见了怎么办
  14. 创建CrossApp工程
  15. 构筑城市生命线:应急管理需要新思路,全域能力成关键
  16. 更改Windows的鼠标滚动方式为Mac方式(win鼠标滚轮反向)
  17. 2021年安全员-A证(江西省)新版试题及安全员-A证(江西省)考试试卷
  18. 国内外快递公司名称一览表
  19. python妹子图爬虫5千张高清大图突破防盗链福利5千张福利高清大图
  20. Google浏览器打开新页面会覆盖当前页面的问题(打开新页面)

热门文章

  1. ubuntu 13.04 mysql_Ubuntu13.04 下MySQL5.6安装过程
  2. 转:聊聊开发中幂等性问题(*)
  3. think-in-java(9)接口
  4. Eclipse系列的隐藏宝藏– 2019年版
  5. 常用jdk的命令行工具:_jhsdb:JDK 9的新工具
  6. 通过通用数据访问扩展AWS生态系统
  7. db2分页sql_停止尝试使用内部DB框架模拟SQL OFFSET分页!
  8. Java Spring Security示例教程中的2种设置LDAP Active Directory身份验证的方法
  9. spring 构造函数注入_Spring构造函数注入和参数名称
  10. 如何在Java地毯下有效地清除问题