[置顶] JUnit入门教程(二)
一:介绍
接着上次的课程,今天我们学习JUnit4的新特性 assertThat()方法,这种方式和其余的assert方法比起来,更加接进英语.
二:分析API
API中的例子:
2{SG4S@~@E1%2(1@EYH7.jpg)
参数
T Actual:你要计算比较的值
org.hamcrest.Matcher<T> matcher:规则匹配器
这个匹配器类是org.hamcrest.Matcher,该类下有许多用于比较计算的静态方法,这个包JUnit中是没有的,要去Hamcrest官网下载,具体链接可以自己百度或者看我上篇文章的链接。
三:使用AssertThat()测试四则运算
Calculator类代码:
package com.ksjl.junit4; /**
* @author 旷世绝伦
*
*
* */ public class Calculator { // 四则运算 public int plus(int x, int y) {
return x + y;
} public int subtraction(int x, int y) {
return x - y;
} public int multiplication(int x, int y) {
return x * y;
} public double division(double x, double y) {
return x / y;
} }
测试类:
package com.ksjl.junit4.test; import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*; //注意这边是静态引入
import static org.hamcrest.Matchers.*;
import com.ksjl.junit4.Calculator; /**
* @author 旷世绝伦
*
*
* */ public class CalculatorTest { private static Calculator cal = null; @BeforeClass
public static void beforeClass() {
cal = new Calculator();
} @Test
public void testAll() {
int result = cal.plus(5, 5); // 加法
assertThat(result, is(10));
result = cal.subtraction(5, 5);// 减法
assertThat(result, greaterThanOrEqualTo(0));
result = cal.multiplication(5, 5);// 乘法
assertThat(result, allOf(lessThan(30), greaterThan(20))); // 满足两个条件
double result2 = cal.division(10.0, 3.0);// 除法
assertThat(result2, closeTo(3.3, 0.3)); //判断是否在3.3 左右 误差不超过正负0.3
} }
工程目录,大家看下,一共要导3个包,如下:
运行测试,看到绿色就OK了,是不是So Easy?
四:添加一个Student类(同时测试多个类,体现使用JUnit的好处)
Student代码:
package com.ksjl.junit4; /**
* @author 旷世绝伦
*
* */
public class Student { private String name="tom"; public String getName() {
return name;
} }
测试类代码:
package com.ksjl.junit4.test; import org.junit.BeforeClass;
import org.junit.Test;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;
import com.ksjl.junit4.Student; /**
* @author 旷世绝伦
*
* */ public class StudentTest { private static Student student = null; @BeforeClass
public static void beforeClass() {
student = new Student();
} @Test
public void testAll() {
String name = student.getName();
assertThat(name, is("tom"));
assertThat(name, not("to"));
assertThat(name, containsString("to"));// 是否包含to
assertThat(name, startsWith("t"));
assertThat(name, endsWith("m"));
assertThat(name, equalTo("tom"));
assertThat(name, equalToIgnoringCase("Tom"));
assertThat(name, equalToIgnoringWhiteSpace("tom"));//忽略空格是否等于tom
} }
工程目录如下:
这时候我们点击com.ksjl.junit.test包Run As Junit Test 就能同时测试两个类,没问题,全部正确。
大家是否感到了新特性的好处呢?
五:其他
1. org.hamcrest.Matchers类中有很多方法,我就不一一说了,例如能测试Map和List ,大家自己看API,自己做实验,API在哪看?
找到hamcrest-library-1.3-javadoc.jar 解压 ,目录下index.html就是API
2. 如果遇到ClassLoader的错误,这是因为类加载器不同的原因,请将jar包像我一样布置,就没问题了.
六:总结
更详细的资料请自己查阅API,入门教程到此结束,算是带大家粗略的认识了下JUnit,谢谢大家!
[置顶] JUnit入门教程(二)的更多相关文章
- 无废话ExtJs 入门教程二十一[继承:Extend]
无废话ExtJs 入门教程二十一[继承:Extend] extjs技术交流,欢迎加群(201926085) 在开发中,我们在使用视图组件时,经常要设置宽度,高度,标题等属性.而这些属性可以通过“继承” ...
- 无废话ExtJs 入门教程二十[数据交互:AJAX]
无废话ExtJs 入门教程二十[数据交互:AJAX] extjs技术交流,欢迎加群(521711109) 1.代码如下: 1 <!DOCTYPE html PUBLIC "-//W3C ...
- 无废话ExtJs 入门教程二[Hello World]
无废话ExtJs 入门教程二[Hello World] extjs技术交流,欢迎加群(201926085) 我们在学校里学习任何一门语言都是从"Hello World"开始,这里我 ...
- mongodb入门教程二
title: mongodb入门教程二 date: 2016-04-07 10:33:02 tags: --- 上一篇文章说了mongodb最基本的东西,这边博文就在深入一点,说一下mongo的一些高 ...
- SpringBoot入门教程(二)CentOS部署SpringBoot项目从0到1
在之前的博文<详解intellij idea搭建SpringBoot>介绍了idea搭建SpringBoot的详细过程, 并在<CentOS安装Tomcat>中介绍了Tomca ...
- PySide——Python图形化界面入门教程(二)
PySide——Python图形化界面入门教程(二) ——交互Widget和布局容器 ——Interactive Widgets and Layout Containers 翻译自:http://py ...
- Elasticsearch入门教程(二):Elasticsearch核心概念
原文:Elasticsearch入门教程(二):Elasticsearch核心概念 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:ht ...
- RabbitMQ入门教程(二):简介和基本概念
原文:RabbitMQ入门教程(二):简介和基本概念 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn ...
- JasperReports入门教程(二):中文打印
JasperReports入门教程(二):中文打印 背景 在上一篇中我们介绍了JasperReport的基本入门,也展示了一个报表.但是我们的示例都是使用的英文,如果我们把需要打印的数据改为中文会怎么 ...
随机推荐
- Android事件详解——拖放事件DragEvent
1.Android拖放框架的作用? 利用Android的拖放框架,可以让用户用拖放手势把一个View中的数据移到当前layout内的另一个View中去. 2.拖放框架的内容? 1)拖放事件类 2)拖放 ...
- 移动开发的框架(用Firepower,不用listview,超快) good
我是通过http传送xml后台是阿帕奇的http server,后台可以用delphi或php 都可以.用post 刚才试了试自带的TNetHttpClient,感觉还好,代码封装也不算深,收发数据也 ...
- tomcat path设置
zjtest7-app:/usr/local/apache-tomcat-7.0.55_8082/logs# netstat -nap | grep 8082 tcp 0 0 :::8082 :::* ...
- Visual Studio的SDK配置
Visual Studio的SDK Visual Studio 6.0自带的SDK是1998年的,目录为C:\Program Files\Microsoft Visual Studio\VC98\,这 ...
- Tokyo Tyrant(TTServer)系列(四)-tcrmgr远程管理与调试
Tokyo Tyrant(TTServer)系列-tcrmgr(远程管理与调试) tcrmgr是TokyoTyrant的管理工具,对ttserver进行管理与执行命令: 通过输入tcrmgr回车,能够 ...
- 如何获取ul 中li选中的值点击button按钮跳转链接
<ul id="parent"> <li></li> <li></li> <li></li> & ...
- tracert路由跟踪命令分析判断
可能有的会使用路由跟踪命令 ,可是却看不太明确显示出来的结果.结合我的来说明一下. (1)tracert命令介绍 tracert是路由跟踪命令,通过该命令的返回结果,能够获得本地到达目标主机所经过的网 ...
- VC++ 视频播放器 图文步骤记录
1.安装DirectShow9.0 SDK DirectShow9 SDK下载链接http://download.csdn.net/detail/jindou910101/5591169 2.运行Di ...
- nginx & flup & django & python3.x @ window7配置备忘录
最近考虑原Prism建筑(非职业.半专业人士认为C/S建筑)至B/S迁移,主要是由于部署问题,包括两个因素:已经做,虽然一键安装和部署的一个因素,心存顾虑,虽然我一再声明这是一个绿色软件.还有一个因素 ...
- poj 2513 连接火柴 字典树+欧拉通路 好题
Colored Sticks Time Limit: 5000MS Memory Limit: 128000K Total Submissions: 27134 Accepted: 7186 ...