assertThat的一般句型为:

assertThat([value],[matcher statement]);

这种断言的优点有:

1.更具有可读性:该语法允许我们以“主谓宾”的方式来思考(assert "x is 3"), 而不是 assertEquals(assert "equals 3 x")。

2.易组合性:任何Matcher语句可以是否定的(not(s)),组合的(either(s).or(t)),映射到组合(each(s)),或者用自定义组合(afterFiveSeconds(s))。

3.易读的失败提示信息。

import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
import org.junit.Test; public class AssertThat {
@Test
public void testMessage(){
String s=new String("hello world"); assertTrue(s.contains("i")||s.contains("happy"));
// failure message:
// java.lang.AssertionError:
assertThat(s,anyOf(containsString("i"),containsString("happy")));
//failure message:
//java.lang.AssertionError:
//Expected: (a string containing "i" or a string containing "happy")
// but: was "hello world"
}
}

4.开发人员可以通过实现Matcher接口,定制自己想要的匹配符。当开发人员发现自己的某些测试代码在不同的测试中重复出现,经常被使用,这时就可以自定义匹配符,将这些代码绑定在一个断言语句中。

junit.jar自带了一些Matcher,定义在org.junit.matchers.JUnitMatchers。为了使用更多的Matcher,我们可以导入hamcrest-core.jar和hamcrest-library.jar。这是JUnit第一次使用第三方的类。使用之前需要静态引入Matcher和CoreMatchers包。

  • import static org.hamcrest.CoreMatchers.*;
  • import static org.hamcrest.Matchers.*;

hamcrest-core.jar和hamcrest-library.jar 下载地址:http://search.maven.org/#search|ga|1|g%3Aorg.hamcrest

Hamcrest官网:http://hamcrest.org/

Hamcrest主页:http://code.google.com/p/hamcrest/wiki/Tutorial

Hamcrest整个包在GitHub的下载地址:https://github.com/hamcrest/JavaHamcrest

其他第三方Matcher如下:

Matchers and assertthat的更多相关文章

  1. Junit 断言 assertThat Hamcrest匹配器

    junit断言总结本文参考了http://blog.csdn.net/wangpeng047/article/details/9628449一 junit断言1.JUnit框架用一组assert方法封 ...

  2. Junit使用教程 转

    几乎所有程序员都听说过Junit的大名,但不知真正懂得运用它的人有多少,我便是其中的一个小白. 知道Junit是用来测试的,但却把“宝刀”当成了“菜刀”用.为了从此不再菜鸟,特此总结整理了下Junit ...

  3. 【原创】Junit4详解一:Junit总体介绍

    Junit是一个可编写重复测试的简单框架,是基于Xunit架构的单元测试框架的实例.Junit4最大的改进是大量使用注解(元数据),很多实际执行过程都在Junit的后台做完了,而且写test case ...

  4. Junit4入门

    eclipse自带junit包,可右键直接新建junit类 静态引入:import static org.junit.Assert.* assert.*是类,静态引入会引入assert里的所有静态方法 ...

  5. Junit使用教程(二)

    二.核心——断言 断言是编写测试用例的核心实现方式,即期望值是多少,测试的结果是多少,以此来判断测试是否通过. 1. 断言核心方法 assertArrayEquals(expecteds, actua ...

  6. Assertions

    JUnit提供了许多重载的断言方法,这些方法均可以通过"import static org.junit.Assert.*"导入.方法的参数顺序一般都是([失败时打印的字符串消息], ...

  7. JUnit4单元测试基础篇

    引言 JUnit作为Java语言的测试框架,在测试驱动开发(TDD)下扮演重要的角色.众所周知,无论开发大型项目还是一般的小型项目, 单元测试都至关重要.单元测试为软件可发测试维护提供了很大的便利.J ...

  8. Junit4X系列--hamcrest的使用

    OK,在前面的一系列博客里面,我整理过了Assert类下面常用的断言方法,比如assertEquals等等,但是org.junit.Assert类下还有一个方法也用来断言,而且更加强大.这就是我们这里 ...

  9. 软件测试assert

    之前实习做过一段时间测试,现做个总结: 实习测试的是一款CM系统(case 系统),来记录IT部门处理的维修,服务,反馈,预定服务等case:b/s架构,人少小项目,实习时间短,去了已经快完工,主要测 ...

随机推荐

  1. Oracle数据库用户数据完整备份与恢复

    使用PLSQL-Developer工具可以快速便捷地完成Oracle数据库用户.表的备份恢复. Oracle数据库用户数据完整备份与恢复 1. 备份 1.1   PL/SQL->工具->导 ...

  2. iOS图片拉伸

    常用的图片拉伸场景有:聊天页面的气泡,需要根据内容拉伸,但圆角拉伸后会变形,为避免圆角拉伸,可以指定拉伸区域.UIImage实体调用以下方法即可指定拉伸区域. - (UIImage *)stretch ...

  3. codevs1051单词接龙(栈)

    /* 看到n的范围就觉得这个不可能是DP啥的 因为这个接龙的规则十分的简单 只要前缀相同即可 所以先按字典序排一遍 这样保证符合规则的一定挨着 然后弄一个stack 每次拿栈顶元素看看待入栈的元素是否 ...

  4. Linux常用操作练习

    Linux常用操作练习 练习一:安装CentOS 1.设置为1G内存(才有图形界面).10G硬盘 2.分给交换分区2G(4G一下2G,8G-32G分4G-8G) 练习二:安装CentOS迷你版 1.安 ...

  5. 使用WMI来连接远端计算机

    1. wmi连接前提 利用wmi来连接远端计算机首先要具有远端计算机管理员的用户名和密码.如果计算机在域中的话,要有域管理员用户名和密码,或者是把域帐户加入本机管理员组中也可以. 2. 相关类的用法- ...

  6. FckEditor组件的使用(新闻浏览发布页面)

    FckEditor组件的使用 准备工作: 1)将FckEditor目录拷贝到网站根目录内. 2)在Web.config的AppSetting分支中添加如下的代码,并修改FckEditor的目录和上传文 ...

  7. 《第一行代码》学习笔记1-Android系统架构

    1. 2003.10,Andy Rubin创办Android公司.2005.8,Google收购之,并于2008年推出Android系统第一个版本. 2. ①Linux Kernel:基于Linux ...

  8. 【转】lua random()

    先来看看这两段代码: ① math.randomseed(os.time())for i=1,10 do n = math.random(10) print(n) 运行结果是: 63210754341 ...

  9. dota监测

    漫漫长假一个人无聊得很,整日DOTA,打的腰酸背痛腿抽筋的.就想着写一个脚本记录自己每天打游戏的时间,于是就产生了下面的这个东西... 运行环境:win7 32位. python版本:3.4.1 由于 ...

  10. jquery 的attr()方法解析

    我想用jquery的attr()方法修改一个li小圆点的背景颜色和外边框的时候:刚开始 $("#shanghai-btn").attr({background:"#999 ...