JUnit你不知道的那些事儿

JUnit是什么? JUnit是一个开发源代码的Java测试框架,用于编写和运行可重复的测试。他是用于单元测试框架体系xUnit的一个实例(用于java语言)。它包括以下特性: 1、用于测试期望结果的断言(Assertion) 2、用于共享共同测试数据的测试工具 3、用于方便的组织和运行测试的测试套件 4、图形和文本的测试运行器 JUnit最初是由Erich Gamma(GoF之一)和Kent B 阅读详情

话说有一次Eric Gamma 坐飞机的时候偶遇Kent Beck(对,就是极限编程和TDD的发起人) ,  两位大牛见面寒暄过以后就觉得很无聊了。

旅途漫漫,干点啥好呢。

Kent Beck当时力推测试驱动开发,  但是没有一个工具或者框架能让大家轻松愉快的写测试,并且自动的运行测试。

两人勾兑了一下:不如自己挽起袖子写一个, 于是两人就在飞机上结对编程 ,  等到飞机的时候,一个划时代的单元测试工具就新鲜出炉了,这就是JUnit:

0?wx_fmt=png

JUnit当然是用Java写的, 其他语言一看, 这东西好, 咱也搞一套, 于是就有了一大批工具,统称xUnit

NUnit (针对.Net 平台) ,  CUnit (针对C语言) , CppUnit(针对C++语言), PyUnit (针对Python), PHPUnit, OCUnit, DUnit, JSUnit ......


超级大牛出马,亲自敲出来的代码自然非同凡响, 它的设计简直就是使用设计模式的典范:

0?wx_fmt=png

更牛的是, 他们是以一种叫做“模式生成架构”的方法来创建JUnit的, 换句话说,就是从零应用模式, 然后一个接一个, 直到你获取最终的系统架构:

0?wx_fmt=png

我第一次看到这种方式, 真是惊为天人,  我知道代码要向模式进行重构, 还从来没听过由模式来构建系统!

但一想到Eric Gamma的背景, 就没有什么可惊讶的了, 因为Eric Gamma 实际上是划时代的书籍《设计模式:可复用面向对象软件基础》四位合著者(称为GoF,Gang of Four)之一

0?wx_fmt=jpeg

这本书的经典地位就不用说了, 像JUnit繁衍出来的xUnit一样, 这本书也有很多的“繁衍品”, 例如

《Head First Degisn Pattern》 , 《设计模式解析》,《大话设计模式》。。。。

JUnit超级流行,几乎是事实上的Java 单元测试和TDD的工具标准, 有人选择了GitHub上最热的三门语言Java,Ruby和Javascript , 对每个语言分析了1000个项目,找出了最常用的组件,可以看到JUnit 以30.7%并列第一

0?wx_fmt=jpeg


所以JUnit已经变成了程序员必备的技能, 不会JUnit就太Out了。


-----------------------------------------------------------------------------------

码农翻身公共号(coderising) : 由工作15年的IBM架构师创建,分享编程和职场的经验教训。

回复下面的关键字,查看更多文章

牛人 键盘侠 留学 读书 调试 烂代码 小白 培训

数据结构 代码腐化 无聊 迷茫 刚工作 死锁 简历  真实项目

HTTP Session XML AJAX TOMCAT 反射 JUnit

加入码农翻身QQ群:135769418 每周日晚9点至10点定期授课,不容错过。

长按二维码, 关注"coderising"

0?wx_fmt=jpeg

设计模式:可复用面向对象软件的基础.[美]Erich Gamma(带详细书签) 这本书的目的就是将面向对象软件的设计经验作为设计模式记录下来。每一个设计模式系统地命名、解释和评价了面向对象系统中一个重要的和重复出现的设计。我们的目标是将设计经验以人们能够有效利用的形式记录下来。鉴于此目的,我们编写了一些重要的设计模式,并以编目分类的形式将它们展现出来。 内容简介 《设计模式:可复用面向对象软件的基础》是引导读者走出软件设计迷宫的指路明灯,凝聚了软件开发界几十年设计经验的结晶。四位面向对象领域专家精心选取了具价值的设计实践,加以分类整理和命名,并用简洁而易于重用的形式表达出来。本书已经成为面向对象技术人员的圣经和词典,书中定义的23个模式逐渐成为开发界技术交流所必备的基础知识和语汇。 立即下载

相关推荐

新疆地形数据下载:30米、12.5米、5米DEM地形数据

新疆是我国陆地面积最大的省级行政区,总面积达166万平方公里。新疆的地形也十分的复杂,新疆的地形呈山脉与盆地相间排列,盆地被高山环抱,,俗称“三山夹两盆”。三山指阿尔泰山、昆仑山、天山,两盆是指塔里木盆地和准噶尔盆地。 对精度要求不高的话,可以直接使用图新地球下载 新疆30米地形数据 大小:9.26GB 来自ASTER v3的新疆30米地形数据 30米地形数据下载 新疆12.5米地形数据 12.5米DEM数据由于精度比较高,一般不会用到全省的数据,通常用的是一个地区的,因此,可以单独分

LocaSpace的博客 3495

[答疑]EA导入java源文件,出现中文字节乱码的问题

北京.放牛娃(80***166) 11:35:31各位,遇到个问题通过EA导入java源文件,出现中文字节乱码的问题,不知道如何设置。北京.放牛娃(80***166) 11:36:03北京.放牛娃(80***166) 13:03:20北京.放牛娃(80***166) 13:03:35没有找到设置代码编辑时的页面编码北京.放牛娃(80***166) 13:09:16解决了王明云(23***97) 13:10:49[幻灯]7.29-8.1日晚-剔除“伪创新”和“无领域”的领域驱动设计-网课[2020.01加一套

rolt的专栏 676

阿里云Ubuntu部署Steam饥荒联机版服务器:从零到多人联机的完整指南

本文详细介绍了在阿里云Ubuntu系统上部署Steam饥荒联机版服务器的完整流程,包括环境准备、SteamCMD安装、服务端配置、Mod管理及后台运行技巧。通过2核4GB的ECS实例配置和端口设置,实现5人流畅联机体验,适合游戏爱好者快速搭建专属服务器。

weixin_29229261的博客 1023

Erich Gamma: 如何使用设计模式

How to Use Design PatternsCopyright © 1996-2005 Artima Software, Inc. All rights reserved.http://www.artima.com/lejava/articles/gammadp.html如何使用设计模式与Erich Gamma的一次谈话,第一部分Bill VennersMay 23, 2005翻译:刘晓伟

8242

windows sever2019切换Linux内核

安装docker engine后,内核是windows,很多镜像都无法安装使用。 一,在https://github.com/linuxkit/lcow/release 下载最新版本release.zip,我使用了如下版本。 二,新建文件夹C:\Program Files\Linux Containers ,把release.zip(不要解压)放入此文件夹 三,编辑docker配置文件( C:\ProgramData\docker\config\daemon.json) ,电脑中没有该文件,新建一

记录日常疑问 3874

【QMIX】一种基于Value-Based多智能体算法

文章目录1. QMIX 解决了什么问题(Motivation)2. QMIX 怎样解决团队收益最大化问题(Method)2.1 算法大框架 —— 基于 AC 框架的 CTDE(Centralized Training Distributed Execution) 模式 QMIX 是一种基于 Value-Based 的多智能体强化学习算法(MARL),其基本思想来源于 Actor-Critic 与 DQN 的结合。使用中心式学习(Centralized Learning)分布式执行(Distributed

qq_38638132的博客 9859

软件工程中的设计模式:常见模式和实际应用

1.背景介绍 软件工程是一门研究如何有效地开发、维护和管理软件的学科。设计模式是软件工程中一个重要的概念,它们是解决特定问题的经过验证和成功应用的解决方案。设计模式可以帮助程序员更快地开发高质量的软件,同时减少重复的劳动。 在本文中,我们将讨论设计模式的核心概念,以及一些常见的设计模式及其实际应用。我们将讨论设计模式的优缺点,以及如何在实际项目中选择和使用设计模式。最后,我们将探讨设计模式的未...

AI天才研究院 2127

ELK 企业级日志分析系统(1)

ELK平台是一套完整的日志集中处理解决方案,将、Logstash和Kiabana三个开源工具配合使用, 完成更强大的用户对日志的查询、排序、统计需求。ElasticSearch:是基于Lucene(一个全文检索引擎的架构)开发的分布式存储检索引擎,用来存储各类日志。Elasticsearch 是用 Java 开发的,可通过 RESTful Web 接口,让用户可以通过浏览器与 Elasticsearch 通信。

云计算运维工程师的成长之路 1864

junit3源码解析

1.框架背景 话说有一次Eric Gamma 坐飞机的时候偶遇Kent Beck(对,就是极限编程和TDD的发起人) ,  两位大牛(不认识他们的自行百度)见面寒暄过以后就觉得很无聊了。 旅途漫漫,干点啥好呢。 Kent Beck当时力推测试驱动开发,  但是没有一个工具或者框架能让大家轻松愉快的写测试,并且自动的运行测试。 两人勾兑了一下:不如自己挽起袖子写一个, 于是两人就在飞机上结对...

haoxin963的专栏 716

【YOLO系列】YOLOv5超详细解读(源码详解+入门实践+改进)

一文带你详细了解YOLOv5(含YOLO系列论文讲解+源码详解+入门实践+算法改进)

路人贾的博客 25万+

orchestrator常见问题汇总

默认的取集群名称的规则为参数决定 ,默认为取主实例 主机名 ,然后按分隔符"."之前的第一段字符为集群别名,这样在集群主库宕机后,新提升的从库的服务器名称为了新的集群名,宕机的主库成为单独的一个集群。1 默认配置文件中设置了匹配规则 ,只有被匹配的主机名才能进行故障恢复,所以该参数需要设置为 "*"3 另外配置文件中还有许多发现,恢复的忽略规则(Ignore) 这些参数也是需要注意的。由于LVS的后端的RS为IP地址,如果直接显示主机名,LVS的接口方法将无法工作。只传入脚本中用到的参数,不要多传入。

DBA之路的博客 828

埃里希伽玛_埃里希·伽玛(Erich Gamma)加入微软

埃里希伽玛 Erich Gamma将以Microsoft杰出工程师的身份加入Visual Studio团队。 根据公告 ,Gamma将领导位于瑞士苏黎世的新的Visual Studio开发实验室,并将于8月初加入该实验室。 Gamma在Java生态系统中有很长的成就:他与人合着了《设计模式:可重用的面向对象软件的元素》这本书,据报道印刷了超过一百万册,是Eclipse平台的Java开发工具的...

516

机器学习特征选择-t检验

在特征选择的过程中通过计算检验统计量值,比较特征之间的统计量的大小,并降序排列,选取统计值较高的特征,从而起到去除差别小的特征(此差别小的特征难以区分不同的额类别)的目的。 以t检验(Student's t test)为例: 假设检验 通过比较两类样本的随机变化,通过计算其p值决定是否拒绝零假设,也即是说:通过计算p值,若p值小于某一阈值则认为两个样本具有显著差异,两个样本是不同的,此时拒绝...

heda3的博客 6700

JUnit 5和JUnit 4比较

JUnit 5旨在调整java 8样式的编码,并且比JUnit 4更强大和灵活。在这篇文章中,JUnit 5 vs JUnit 4,我们将关注junit 4和junit 5之间的一些主要差异。 1. JUnit 5 vs JUnit 4 - 注释 两个版本中的大多数注释都是相同的,但很少有区别。这是一个快速比较。 特征 JUNIT 4 JUNIT 5 声明一种测试方法 ...

javaZhong的博客 3万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

你知道 Junit 是怎么跑的吗?带你深入了解Junit运行流程

Junit 是由 Kent Beck 和 Erich Gamma 于 1995 年底着手编写的框架,自此以后,Junit 框架日益普及,现在已经成为单元测试 Java 应用程序的事实上的标准。 在软件开发领域中,从来没有这样的事情:少数几行代码对大量代码起着如此重要的作用 --- Martin Fowler 从一个简单的例子开始认识 Junit 本文注重点在于研究 Junit 运行的基本原理和执行单元测试的流程,所以对于一些额外的信息和数据不单独准备,本文所使用的测试 ...

丁鱼教育官方博客 1460

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

java:程序包org.junit不存在详解

java:程序包org.junit不存在详解

weixin_67607739的博客 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

JUnit 4和JUnit 5区别

特征 JUNIT 4 JUNIT 5 声明一种测试方法 @Test @Test 在当前类中的所有测试方法之前执行 @BeforeClass @BeforeAll 在当前类中的所有测试方法之后执行 @AfterClass @AfterAll 在每个测试方法之前执行 @Before @BeforeEach 每种测试方法后执行 @After @AfterEach 禁用测试方法/类 @Ignore @Disa

渣渣 6257

你知道 Junit 是怎么跑的吗?

你知道 Junit 是怎么跑的吗? Junit 是由 Kent Beck 和 Erich Gamma 于 1995 年底着手编写的框架,自此以后,Junit 框架日益普及,现在已经成为单元测试 Java 应用程序的事实上的标准。 在软件开发领域中,从来没有这样的事情:少数几行代码对大量代码起着如此重要的作用 — Martin Fowler 从一个简单的例子开始认识 Junit 本文注重点在于研究 Junit 运行的基本原理和执行单元测试的流程,所以对于一些额外的信息和数据不单独准备,本文所使用的测试..

测试萌萌 505

关于JUnit5 你必须知道的(一) JUnit5架构和环境搭建

由于工作中都是使用maven来构建项目,所以下面有关环境搭建都是使用的maven(IDE使用的idea) 凡是开发对于JUnit这个框架一定都不陌生,JUnit 作为一个单元测试框架已经诞生了数十年。而JUnit 5在JUnit 4发布多年后的2017年也终于发布了。 JUnit 5架构体系 作为最新版本的JUnit框架,JUnit 5相比之前版本的JUnit框架有了较大的突破,添加了许多新特性。 之前的JUnit 框架所有的功能都被打包在一个构件(artifact)中。它被提供给开发者、IDE、构建工具、

qq_35448165的博客 1869

关于JUnit5 你必须知道的(三) 深入理解JUnit 5扩展机制

假设你对于JUnit 5有基本的认识,并且对其扩展机制有初步了解。如果你不清楚JUnit 基本的架构和使用,可以参考之前的三篇博客 关于JUnit5 你必须知道的(一) JUnit5架构和环境搭建 关于JUnit5 你必须知道的(二)JUnit 5的新特性 单元测试之JUnit 5 参数化测试使用手册 ...

qq_35448165的博客 1984

为什么JUnit不提供assertNotEquals方法?

Does anybody know why JUnit 4 provides assertEquals(foo,bar) but not assertNotEqual(foo,bar) method

w36680130的博客 725

Eclipse安装插件——junit

1 Eclipse 中Junit 的配置Eclipse IDE 中集成了JUnit 组件,无须另行下载和安装,但是为了更好的使用Junit(更多细节请参考http://www.junit.org ),我们还要在Eclipse 中进行一些设置。其中主要是就是类路径变量的设置。1.1 创建变量JUNIT 和JUNIT_SRC在project 的classpath 中添加junit.jar。因此,建立一...

我的路 4204

Intellij IDEA junit 使用之org.junit不存在

在IDEA里面已经新建好了一个类,并加入了内容,然后创建测试类,快捷键(Ctrl+Alt+T)或者如图右键 Goto Test 创建后运行报错: Error:(3, 24) java: 程序包org.junit不存在 点到代码中红色的部分显示: Cannot resolve symbol 'junit' 解决: File -> Project Str

he99774的博客 6万+

java 没有junit包,~项目导入时报错:程序包org.junit不存在

求助~项目导入时报错:程序包org.junit不存在网上下载下来的例子导入的时候报错:程序包org.junit不存在可是我看到pom.xml已经有:junitjunit4.12testmavendependency里面也看到junit的jar包了错误代码:[ERROR]COMPILATIONERROR:[INFO]-------------------------------------...

weixin_42327291的博客 1553

junit5和junit4_混合JUnit4和JUnit5

junit5和junit4 Yomex Owo在Unsplash上拍摄的照片 JUnit是Java编程语言最受欢迎的测试框架之一。 在测试驱动开发(TDD)的开发中也很重要。 在2018年,该框架的最新版本JUnit5得以发布,许多使用JUnit平台的程序员不得不决定是否重构其在以前版本的JUnit中编写的现有代码。 本文是关于将JUnit4和JUnit5混入正在进行的项目中,以在...

编程故事的地方 973
上一篇: 关于Java 初学者需要知道的10件事
下一篇: Java小白扫盲(第一周):贵在折腾
码农翻身
码农翻身 《码农翻身》作者 《码农翻身》作者
博客等级 码龄8年 3万+粉丝 1084原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值