一:介绍

接着上次的课程,今天我们学习JUnit4的新特性 assertThat()方法,这种方式和其余的assert方法比起来,更加接进英语.

二:分析API

API中的例子:

参数

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入门教程(二)的更多相关文章

  1. 无废话ExtJs 入门教程二十一[继承:Extend]

    无废话ExtJs 入门教程二十一[继承:Extend] extjs技术交流,欢迎加群(201926085) 在开发中,我们在使用视图组件时,经常要设置宽度,高度,标题等属性.而这些属性可以通过“继承” ...

  2. 无废话ExtJs 入门教程二十[数据交互:AJAX]

    无废话ExtJs 入门教程二十[数据交互:AJAX] extjs技术交流,欢迎加群(521711109) 1.代码如下: 1 <!DOCTYPE html PUBLIC "-//W3C ...

  3. 无废话ExtJs 入门教程二[Hello World]

    无废话ExtJs 入门教程二[Hello World] extjs技术交流,欢迎加群(201926085) 我们在学校里学习任何一门语言都是从"Hello World"开始,这里我 ...

  4. mongodb入门教程二

    title: mongodb入门教程二 date: 2016-04-07 10:33:02 tags: --- 上一篇文章说了mongodb最基本的东西,这边博文就在深入一点,说一下mongo的一些高 ...

  5. SpringBoot入门教程(二)CentOS部署SpringBoot项目从0到1

    在之前的博文<详解intellij idea搭建SpringBoot>介绍了idea搭建SpringBoot的详细过程, 并在<CentOS安装Tomcat>中介绍了Tomca ...

  6. PySide——Python图形化界面入门教程(二)

    PySide——Python图形化界面入门教程(二) ——交互Widget和布局容器 ——Interactive Widgets and Layout Containers 翻译自:http://py ...

  7. Elasticsearch入门教程(二):Elasticsearch核心概念

    原文:Elasticsearch入门教程(二):Elasticsearch核心概念 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:ht ...

  8. RabbitMQ入门教程(二):简介和基本概念

    原文:RabbitMQ入门教程(二):简介和基本概念 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn ...

  9. JasperReports入门教程(二):中文打印

    JasperReports入门教程(二):中文打印 背景 在上一篇中我们介绍了JasperReport的基本入门,也展示了一个报表.但是我们的示例都是使用的英文,如果我们把需要打印的数据改为中文会怎么 ...

随机推荐

  1. [置顶] location.href你真的会用了?

    *.location.href 用法: top.location.href=”url”          在顶层页面打开url(跳出框架) self.location.href=”url”       ...

  2. uva 1025

    紫皮书 非原创…… 某城市的地铁是线性的有n个车站从左到右编号为1-n,有M1辆地铁从第一站出发,有M2辆车从最后一站出发,mario从第一站出发,目的是在时刻T会见车站n的一个朋友(间谍).在车站等 ...

  3. Redis C客户端API - God's blog - 博客频道 - CSDN.NET

    Redis C客户端API - God's blog - 博客频道 - CSDN.NET Redis安装步骤: 1.redis server安装 wget http://redis.googlecod ...

  4. XML学习经验实例总结2

    DTD约束 Book.dtd: <!ELEMENT 书架 (书+)> <!ELEMENT 书 (书名,价格,介绍)> <!ELEMENT 书名 (#PCDATA)> ...

  5. Swift - 使用NSURL进行数据的提交和获取(POST与GET)

    使用Swift进行iOS开发时,不可避免的要进行远程的数据获取和提交. 其数据请求的方式既可能是POST也可能是GET.同不管是POST还是GET又可以分为同步请求和异步请求. 下面通过四个例子来进行 ...

  6. 使用微软Remote Desktop 手机远程控制 windows

    在我的电脑上右击选择“属性”,打开属性面板.然后点击左边的“远程设置”. 2/2 如果你要操作的计算机出入外网(大多数是家里网线进线直连电脑),就选择远程桌面选择框中的“允许运行任意版本远程桌面的计算 ...

  7. 同步linux服务器的时间

    1:看系统时间的时候发现有点儿误差,大概在2分钟左右. 于是想自动同步系统的时间. 2:找到ntpdate命令,没有就安装.debian(apt-get install ntpdate) 3:获取时间 ...

  8. sqlserver 自学笔记 函数实训 学分学期转换函数的设计

    设计目的: 1.运用sql基本知识,编写学期转换函数. 2.运用sql基本知识,编写学分转换函数,将考试成绩转换为学分 3.通过上述函数的编写与调试,熟练掌握 sql函数的编写.调试与使用方法. 设计 ...

  9. Java抓取网页数据(原来的页面+Javascript返回数据)

    转载请注明出处! 原文链接:http://blog.csdn.net/zgyulongfei/article/details/7909006 有时候因为种种原因,我们须要採集某个站点的数据,但因为不同 ...

  10. Jobbox.io(职位盒子): 新兴的面向技术人才的职场招聘众推平台

    人才招聘市场一个主要问题在于猎头中介费昂贵.这对于大公司而言,或可接受. 但对于海量小微企业而言招聘成本和效率之间的平衡是非常大的一个问题. 现在产品猎场(Product Hunt)上出现了一些新的招 ...