[置顶] 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的基本入门,也展示了一个报表.但是我们的示例都是使用的英文,如果我们把需要打印的数据改为中文会怎么 ...
随机推荐
- Oracle 排序规则
<pre name="code" class="html">SQL> select * from t1 where id>=1 and ...
- 综述-如何克服HTML5的“性工能”障碍
http://ask.dcloud.net.cn/docs HTML5自出现以来,几经风雨,虽看似很有前途,但实际使用问题太多,DCloud为此踩了无数坑.但我们从未放弃,我们加入了W3C,发起了 H ...
- POJ 3619 Speed Reading(简单题)
[题意简述]:有K头牛,N页书,每次第i头牛每分钟仅仅能读Si页书,连续读Ti分钟,之后歇息Ri分钟.如今问我们第i头牛花费多少时间能够读完这N页书. [分析]:简单的模拟 //220K 32Ms # ...
- linux下C/C++,多线程pthread《转载》
原文网址:http://www.cnblogs.com/xianghang123/archive/2011/08/11/2134927.html ·线程创建 函数原型:int pthread_cr ...
- pathload --有效的网络带宽估计方法
上一篇博客简述了现行的带宽估计的方法,分类,以及一些问题. 见:http://blog.csdn.net/ice110956/article/details/11071969 上文列出了13种现行的方 ...
- xvfb 初步探究
有时候我们不关注程序是否有界面(比如自动化测试),只要程序在运行就可以了 很感谢 xvfb 这个工具给我们提供了相关的功能 比如在没有 X server 的机器上运行 gedit, 可以用下面的命令 ...
- 学习笔记之TCP/IP协议分层与OSI參考模型
1.协议的分层 ISO在制定标准化OSI之前,对网络体系结构相关的问题进行了充分的讨论, 终于提出了作为通信协议设计指标的OSI參考模型.这一模型将通信协议中必要 的功能分成了7层.通过这些 ...
- 一int考虑什么类型的多少字节
一int表示的字节数? 问题是,我们经常得到的答案4. 但int究竟占多少个字节,却跟你的机器环境有关. As you can see, the typical data type sizes mat ...
- web服务器配置方法
Web服务器概述 Web服务器又称为WWW服务器,它是放置一般网站的服务器.一台Web服务器上可以建立多个网站,各网站的拥有者只需要把做好的网页和相关文件放置在Web服务器的网站中,其它用户就可以用浏 ...
- Face-landmarks-detection-benchmark 人脸特征定位网站汇总
源地址:https://www.douban.com/note/525032729/ https://github.com/delphifirst/FaceXhttps://github.com/ ...