Matchers and assertthat
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的更多相关文章
- Junit 断言 assertThat Hamcrest匹配器
junit断言总结本文参考了http://blog.csdn.net/wangpeng047/article/details/9628449一 junit断言1.JUnit框架用一组assert方法封 ...
- Junit使用教程 转
几乎所有程序员都听说过Junit的大名,但不知真正懂得运用它的人有多少,我便是其中的一个小白. 知道Junit是用来测试的,但却把“宝刀”当成了“菜刀”用.为了从此不再菜鸟,特此总结整理了下Junit ...
- 【原创】Junit4详解一:Junit总体介绍
Junit是一个可编写重复测试的简单框架,是基于Xunit架构的单元测试框架的实例.Junit4最大的改进是大量使用注解(元数据),很多实际执行过程都在Junit的后台做完了,而且写test case ...
- Junit4入门
eclipse自带junit包,可右键直接新建junit类 静态引入:import static org.junit.Assert.* assert.*是类,静态引入会引入assert里的所有静态方法 ...
- Junit使用教程(二)
二.核心——断言 断言是编写测试用例的核心实现方式,即期望值是多少,测试的结果是多少,以此来判断测试是否通过. 1. 断言核心方法 assertArrayEquals(expecteds, actua ...
- Assertions
JUnit提供了许多重载的断言方法,这些方法均可以通过"import static org.junit.Assert.*"导入.方法的参数顺序一般都是([失败时打印的字符串消息], ...
- JUnit4单元测试基础篇
引言 JUnit作为Java语言的测试框架,在测试驱动开发(TDD)下扮演重要的角色.众所周知,无论开发大型项目还是一般的小型项目, 单元测试都至关重要.单元测试为软件可发测试维护提供了很大的便利.J ...
- Junit4X系列--hamcrest的使用
OK,在前面的一系列博客里面,我整理过了Assert类下面常用的断言方法,比如assertEquals等等,但是org.junit.Assert类下还有一个方法也用来断言,而且更加强大.这就是我们这里 ...
- 软件测试assert
之前实习做过一段时间测试,现做个总结: 实习测试的是一款CM系统(case 系统),来记录IT部门处理的维修,服务,反馈,预定服务等case:b/s架构,人少小项目,实习时间短,去了已经快完工,主要测 ...
随机推荐
- Android(java)学习笔记221:开发一个多界面的应用程序之不同界面间互相传递数据(短信助手案例)
1.首先我们看看下面这个需求: 这里我们在A界面上,点击这个按钮"选择要发送的短信",开启B界面上获取网络上各种短信祝福语,然后B界面会把这些网络祝福语短信发送给A界面到" ...
- 1247 排排站 USACO(查分+hash)
/* 暴力查分 n*n */ #include<cstdio> #include<cstring> #include<iostream> #define maxn ...
- Core Python Notes
开发需要在读 Python 核心编程,一些 Point 记录如下. ******************************************** 版本相关 标准版的 Python 是用 C ...
- Directive Definition Object
不知道为什么这个我并没有想翻译过来的欲望,或许我并没有都看熟透,不好误人子弟,原版奉上. Here's an example directive declared with a Directive D ...
- Ext checkbox
Ext.require([ 'Ext.grid.*', 'Ext.data.*', 'Ext.util.*', 'Ext.grid.PagingScroller', ...
- Linux下解决高并发socket最大连接数所受的各种限制(解除IO限制)
linux作为服务器系统,当运行高并发TCP程序时,通常会出现连接建立到一定个数后不能再建立连接的情况 本人在工作时,测试高并发tcp程序(GPS服务器端程序),多次测试,发现每次连接建立到3800左 ...
- iOS子线程操作UI问题检查
iOS开发中,因为大部分函数都不是线程安全的,所以UI子线程中操作UI是非常危险的事,但是有时候因为开发者经验不足,不知道子线程中不能UI,或者知道但是写代码的时候没注意,或者不知道那些函数操作UI了 ...
- ASP.NET菜鸟之路之登录系统
背景 我是一个ASP.NET菜鸟,暂时开始学习ASP.NET,在此记录下我个人敲的代码,没有多少参考价值,请看到的盆友们为我点个赞支持我一下,多谢了. 网站介绍 根据书上的例子做了一个比较粗糙的登录例 ...
- php 与 ajax 获取123的案例
同事问我,咱们从数据库里面获取数据,用ajax的方式展示到前台页面.啥都不说了,动手写个案例吧. 1,建立一个页面: <!DOCTYPE html PUBLIC "-//W3C//DT ...
- [置顶] Spring的DI依赖实现分析
DI(依赖注入)是Spring最底层的核心容器要实现的功能之一,利用DI可以实现程序功能的控制反转(控制反转即程序之间之间的依赖关系不再由程序员来负责,而是由Spring容器来负责) 一个简单的例子( ...