测试反模式冰激凌模式的不足_单元测试反模式,完整列表

测试反模式冰激凌模式的不足

我前段时间写过有关OOP中的反模式的文章 。 现在该写单元测试反模式了,因为它们也存在,并且有很多。 我将尝试在列表中包括我知道的每个示例。 如果您认识其他任何人,请通过请求请求将其添加,或在下面发表评论。 对于每个反模式,如果不是我的,我将尝试提及它的发现位置。 请记住,如果我在某处找到它,并不一定意味着它是在那发明的。 如果发现错误,请发表评论。

测试反模式

杜鹃 1 (又称陌生人3 )。 这是一种测试方法,它位于同一单元测试中,但实际上并不属于该单元测试。

按方法测试 1 。 尽管测试和生产类之间的一对一关系是一个合理的起点,但是测试和生产方法之间的一对一关系几乎总是一个坏主意。

肛门探针 2 。 必须使用不健康的方式执行其测试的测试,例如使用反射读取私有字段。

连体双胞胎 2 。 测试称为单元测试,但实际上是集成测试,因为被测系统和测试之间没有隔离。

幸福的道路 (又名对所有赔率3 ,骗子3的成功)。 这些测试始终走在快乐的道路上(即预期的结果),而无需测试边界和异常。

慢戳 3 。 运行非常慢的单元测试。 当开发人员开始进行测试时,他们有时间去洗手间,抽烟,或者更糟糕的是,在一天结束之前回家进行测试。

巨人 3 。 单元测试尽管可以有效地测试被测试对象,但可以跨越数千行,并且包含许多测试用例。 这可以表明被测系统是上帝对象。

嘲讽 3 。 有时嘲笑可能很好,而且很方便。 但是有时,开发人员可能会迷失自己去模仿未经测试的内容。 在这种情况下,单元测试包含如此多的模拟,存根和/或伪造品,以至于根本没有对被测系统进行测试,而是从模拟返回的数据正在被测试。

督察 3 。 为了达到100%的代码覆盖率而违反封装的单元测试,但是对对象中发生的事情了解得非常多,以至于任何重构的尝试都会破坏现有的测试,并要求任何更改都应反映在单元测试中。

慷慨的剩菜 3 (又名链帮 , 湿地板 )。 一个实例,其中一个单元测试创​​建保留在某处的数据,而另一个测试出于自己的vious回目的重用该数据。 如果“生成器”是后来运行的,或者根本没有运行,则使用该数据的测试将完全失败。

本地英雄 3 (又名“隐藏依赖项”,“操作系统推广者”,“ 观望者” ,“ 环境破坏者” )。 一个测试用例要依赖于特定于其编写的开发环境才能运行。 结果是测试通过了开发箱,但在有人尝试在其他地方运行时失败。

Nitpicker 3 。 单元测试仅在只对其中的一小部分感兴趣时才比较完整的输出,因此测试必须与其他不重要的细节保持一致。

秘密守望者 3 。 乍一看,由于没有断言,因此似乎没有进行任何测试,但正如他们所说,“细节决定成败”。 该测试实际上是在发生事故时依赖于引发异常,并且期望测试框架捕获该异常并将其作为故障报告给用户。

道奇 3 。 单元测试具有许多针对次要(并且可能易于测试)副作用的测试,但从未测试核心所需的行为。 有时,您可能会在与数据库访问相关的测试中发现此问题,该测试中调用了一个方法,然后该测试从数据库中选择并针对结果运行断言。

劳德茅斯 3 。 单元测试(或测试套件),即使通过测试,也会通过诊断消息,日志记录和其他杂项使控制台混乱。

贪婪的守望者 3 。 捕获异常并吞没堆栈跟踪的单元测试,有时将其替换为信息较少的失败消息,但有时甚至只是记录日志(请参阅Loudmouth)并通过测试。

音序器 3 。 单元测试取决于断言期间以相同顺序出现的无序列表中的项目。

枚举器 3 (又名无名测试 )。 单元测试,其中每个测试用例方法名称仅是一个枚举,例如test1test2test3 。 结果,测试用例的意图尚不清楚,唯一可以确定的方法是阅读测试用例代码并祈求清晰。

Free Ride 3 (又名Piggyback )。 与其编写新的测试用例方法来测试另一个功能,不如在现有的测试用例中使用新的断言。

设置 3 过多 (又名Hen母亲 )。 为了开始测试,需要进行大量工作才能进行的测试。 有时,使用数百行代码来设置一个测试的环境,其中涉及多个对象,由于所有设置的“噪音”,因此很难真正确定要测试的内容。

线打手 。 乍一看,这些测试涵盖了所有内容,并且代码覆盖率工具可以100%确认它,但实际上,这些测试只是对代码进行了编码,而没有进行任何输出分析。

四十英尺杆测试 ( 请参阅 )。 由于这些测试过于接近他们要测试的类,因此它们之间的距离很远,被无数的抽象层和他们要检查的逻辑中的数千行代码分隔开。

有用的链接:

  1. Spock: Rob Fletcher的作品
  2. Boni Garcia的JUnit 5掌握软件测试
  3. TDD反模式 (James Carr)

翻译自: https://www.javacodegeeks.com/2018/12/unit-testing-anti-patterns-full-list.html

测试反模式冰激凌模式的不足

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

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

相关文章

mysql导入三个基本表_mysql 基础导入导出

导入导出mysqldump导出:mysqldump -u root -p --databases 数据库1 数据库2 > xxx.sql导入:系统命令行: MySQL -u用户名 -p密码 常见选项:--all-databases, -A: 备份所有数据库--databases, -B: 用于备份…

Java代码中方法的特殊修饰符/修饰词/关键字

文章目录nativesynchronizednative 用该修饰符定义的方法在类中没有实现,而大多数情况下该方法的实现是用C、C编写的。 synchronized 多线程的支持。用该修饰符定义的方法被调用时,没有其它线程能够调用该方法,其它的 synchronized 方法也…

aws dynamodb_带有AWS DynamoDB的React式Spring Webflux

aws dynamodbAWS已经发布了Java版本2的AWS开发工具包 ,该开发工具包现在支持针对不同AWS服务的API调用的非阻塞IO。 在本文中,我将探讨如何使用AWS开发工具包2.x的DynamoDB API以及如何使用Spring Webflux堆栈公开响应式端点-这种方式,应用程…

centos6.5 rpm安装mysql_CentOS6.5系统下RPM包安装MySQL5.6(转)

1.查看操作系统相关信息。[rootlinuxidc ~]# cat /etc/issueCentOS release 6.5 (Final)Kernel \r on an \m[rootlinuxidc ~]# uname -aLinux linuxidc 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux2.创建需要下载rpm软件包的目…

对象作为参数示例java_功能Java示例 第6部分–用作参数

对象作为参数示例java这是称为“ Functional Java by Example”的系列文章的第6部分。 我在本系列的每个部分中开发的示例是某种“提要处理程序”,用于处理文档。 在前面的部分,我们试图通过移动尽可能多的副作用,如IO,该系统的外…

为什么Java在后来的版本中,给接口增加了默认方法、静态方法、私有方法?

在业务发展过程中,发现某个功能是所有子类都需要的,那么我们该怎么办?给接口增加抽象方法吗?如果直接在接口增加抽象方法,那么所有已经写好的具体实现类就会报编译错误。因为具体类必须实现接口的全部抽象方法。这样就…

linux 源码包安装mysql_LINUX下源码包安装mysql

tar xvfz mysql-5.1.50-linux-i686-glibc23.tar.gz -C /usr/local/解压到的目录cd /usr/local/[rootdrbd2 local]# ln -sv mysql-5.1.50-linux-i686-glibc23 mysql(创建连接)groupadd mysql 添加mysql的用户组useradd -g mysql mysql 增加mysql用户并把其加入mysql组cd mysql[r…

jdk 安全属性_系统属性的JDK 12 Javadoc标记

jdk 安全属性JDK 12 Early Access Build 20 ( 2018/11/15 )可用,可以用来试用新的Javadoc标签{systemProperty} 。 新的{systemProperty} Javadoc标记在core-libs-dev邮件列表消息“ FYI:用于记录系统属性的新javadoc标记 ”中进行…

Lambda表达式的学习

文章目录函数式编程思想函数式接口Lambda 的使用前提Lambda 的标准格式Lambda 极简特性演示代码函数式编程思想 与面向对象编程思想的区别: 1.面向对象的思想是做一件事情,找一个能解决这个事情的对象,调用对象的方法来完成事情 2.函数式编程…

公证服务信息_使用多个公证员提高网络吞吐量

公证服务信息您是否需要高吞吐量的Corda网络? 网络的吞吐量是否稳定? 您是否已经从其他领域挤出了所有可能的表现? 如果您对这些问题的回答是“是”,那么我可能会为您提供一些有用的信息。 我列出了这些问题,以减少您过…

java判断手机号_java使用正则表达式判断手机号的方法示例

本文实例讲述了java使用正则表达式判断手机号的方法。分享给大家供大家参考,具体如下:要更加准确的匹配手机号码只匹配11位数字是不够的,比如说就没有以144开始的号码段,故先要整清楚现在已经开放了多少个号码段,国家号…

Spring JDBC的学习

文章目录介绍使用步骤常用方法示例代码介绍 所谓 Spring JDBC,是 Spring 框架对 JDBC 的简单封装。提供了一个 JdbcTemplate 对象简化 JDBC 的开发。 使用步骤 步骤: 1.导入相关的 jar 包 2.创建 JdbcTemplate 对象,依赖于数据源 DataSo…

编写脚本电脑怎么编写界面_在任何无法理解的情况下,请编写脚本

编写脚本电脑怎么编写界面脚本编写是使您的应用程序在运行时就可根据客户需求进行调整的最流行的方法之一。 与往常一样,此方法不仅带来好处,例如,在灵活性和可管理性之间存在众所周知的折衷方案。 本文不是从理论上讨论优缺点的文章之一&…

stack java实现_Stack (堆栈)使用JAVA实现

代码如下:import java.util.AbstractList;import java.util.Arrays;import java.util.Iterator;import java.util.List;import java.util.RandomAccess;public class Stack extends AbstractListimplements List, RandomAccess, Cloneable, java.io.Serializable{pr…

HTML特殊符号/特殊字符

注:实体名称大小写敏感 点击查看更多特殊字符

访客模式 无痕模式 区别_旧访客设计模式的新生活

访客模式 无痕模式 区别介绍 访客 [1、2]是众所周知的经典设计模式。 有很多资源对其进行了详细说明。 在不深入研究实现的情况下,我将简要提醒一下该模式的概念,解释其优点和缺点,并提出一些可以使用Java编程语言轻松应用于其的改进。 古典…

HTML的图片标签img的图片地址

使用相对路径&#xff0c;例如&#xff0c;当前目录中的子目录 image 中的图片 1.jpg&#xff0c;可以写成 ./image/1.jpg&#xff0c;其中 ./ 表示当前目录&#xff0c;可以省略不写。 <img src"image/1.jpg"/>实际上HTML文档数据写入到 Response 中时&#…

java swing 左上角图标_科学网—Matlab: 学习GUI(修改窗口左上角图标而不warning) - 刘磊的博文...

网上常用的方法&#xff1a;if ~isdeployednewIconjavax.swing.ImageIcon(.piciap.jpg);elsenewIconjavax.swing.ImageIcon(iap.jpg);endjFrame get(hObject,javaframe);jFrame.setFigureIcon(newIcon);运行后warning&#xff1a;Warning: figure JavaFrame property will be …

pbfunc外部扩展函数_从外部CorDapp扩展和覆盖流

pbfunc外部扩展函数Corda 4于上周&#xff08;2月21日&#xff09;发布&#xff0c;带来了大量的新功能&#xff0c;使Corda更加令人愉快。 老实说&#xff0c;我有点假设有很多新功能。 我快速浏览了变更日志&#xff0c;主要是看到我的贡献被引用&#xff0c;但是我记得看到很…

表单项标签的input标签的单选框(radio)

<input type"radio" name"gender" value"male"> 男 <input type"radio" name"gender" value"female"> 女1.单选框需要注意的是&#xff0c;如果是属于一组的选项&#xff0c;那么 name 属性的值必须相…