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.易读的失败提示信息。

[java] view plaincopy

  1. import static org.junit.Assert.*;
  2. import static org.hamcrest.CoreMatchers.*;
  3. import org.junit.Test;
  4. public class AssertThat {
  5. @Test
  6. public void testMessage(){
  7. String s=new String("hello world");
  8. assertTrue(s.contains("i")||s.contains("happy"));
  9. // failure message:
  10. // java.lang.AssertionError:
  11. assertThat(s,anyOf(containsString("i"),containsString("happy")));
  12. //failure message:
  13. //java.lang.AssertionError:
  14. //Expected: (a string containing "i" or a string containing "happy")
  15. //  but: was "hello world"
  16. }
  17. }

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如下:

时间: 2024-08-11 20:51:34

Matchers and assertthat的相关文章

Usage and Idioms——Matchers and assertthat

assertThat 一种插入机制,语法如下: assertThat([value], [matcher statement]); 例如: assertThat(x, is(3)); assertThat(x, is(not(4))); assertThat(responseString, either(containsString("color")).or(containsString("colour"))); assertThat(myList, hasItem

Junit使用教程 转

几乎所有程序员都听说过Junit的大名,但不知真正懂得运用它的人有多少,我便是其中的一个小白. 知道Junit是用来测试的,但却把“宝刀”当成了“菜刀”用.为了从此不再菜鸟,特此总结整理了下Junit的知识点. 开始之前确保你的项目引入了junit-xxx.jar和hamcrest-core-xxx.jar这两个包,xxx是版本号. 一.建立Junit测试类 1. 右击test测试包,选择New-->Oher... 2. 在窗口中找到Junit,选择Junit Test Case 3. 输入名称

Junit测试集锦

前言: 一个程序从设计很好的状态开始,随着新的功能不断地加入,程序逐渐地失去了原有的结构,最终变成了一团乱麻.所以在开发过程中,对于程序员来说,测试是非常重要的.言归正传,开始Junit的测试. eclipse/Myeclipse中用Junit进行单元测试很方便,尤其是Junit4引入了很多Annotation注解以后. 一.核心--断言 断言是编写测试用例的核心实现方式,即期望值是多少,测试的结果是多少,以此来判断测试是否通过. 1. 断言核心方法 assertArrayEquals(expe

junit使用第一弹

知识点——断言 断言是编写测试用例的核心实现方式,即期望值是多少,测试的结果是多少,以此来判断测试是否通过. 1. 断言核心方法 assertArrayEquals(expecteds, actuals) 查看两个数组是否相等. assertEquals(expected, actual) 查看两个对象是否相等.类似于字符串比较使用的equals()方法 assertNotEquals(first, second) 查看两个对象是否不相等. assertNull(object) 查看对象是否为空

软件测试assert

之前实习做过一段时间测试,现做个总结: 实习测试的是一款CM系统(case 系统),来记录IT部门处理的维修,服务,反馈,预定服务等case:b/s架构,人少小项目,实习时间短,去了已经快完工,主要测试VPN登陆,提交邮件反馈,系统内存分析有无内存泄露等:(eclipse MAT插件) 白盒黑盒都做: 白盒利用:逻辑覆盖法和基本路径法进行设计,给定的人测试逻辑,代码测试各个模块功能, 黑盒主要验证其功能:实现能不能打通:case优先级,备注乱码,邮件自动查找,case跟踪等 1.        

Junit使用教程(二)

二.核心——断言 断言是编写测试用例的核心实现方式,即期望值是多少,测试的结果是多少,以此来判断测试是否通过. 1. 断言核心方法 assertArrayEquals(expecteds, actuals) 查看两个数组是否相等. assertEquals(expected, actual) 查看两个对象是否相等.类似于字符串比较使用的equals()方法 assertNotEquals(first, second) 查看两个对象是否不相等. assertNull(object) 查看对象是否为

JUnit4单元测试基础篇

引言 JUnit作为Java语言的测试框架,在测试驱动开发(TDD)下扮演重要的角色.众所周知,无论开发大型项目还是一般的小型项目, 单元测试都至关重要.单元测试为软件可发测试维护提供了很大的便利.JUnit 4 作为最新版本,增添了许多新的特性, 结合Hamcrest,可以写出很多灵活的测试.从JUnit 4 开始 jar包放在org.junit包下.代码已经托管在GitHub上. 为了以后测试方便,自定义了一个JUnit的类库,把几个重要的jar包导在一个类库, 这样,以后的项目工程需要写单

Junit使用教程

二.核心--断言 断言是编写测试用例的核心实现方式,即期望值是多少,测试的结果是多少,以此来判断测试是否通过. 1. 断言核心方法 assertArrayEquals(expecteds, actuals) 查看两个数组是否相等. assertEquals(expected, actual) 查看两个对象是否相等.类似于字符串比较使用的equals()方法 assertNotEquals(first, second) 查看两个对象是否不相等. assertNull(object) 查看对象是否为

JUnit——assertThat(acture,matcher)

使用hamcrest之前需要引入相关的jar包,包括hamcrest-core.1.3.jar和hamcrest-library-1.3.jar. 具体引入的方法为:右击JUnit工程——build path——add external archives 这时在真正测试的时候,还需要引入静态方法import static org.hamcrest.Matchers.*; package com.bjsxt.junit4.test; import static org.junit.Assert.*