junit学习笔记(二):hamcrest和TestSuit
1. hamcrest
- 核心
- anything - 总是匹配,如果你不关心测试下的对象是什么是有用的
- describedAs - 添加一个定制的失败表述装饰器
- is - 改进可读性装饰器 - 见下 “Sugar”
- 逻辑
- allOf - 如果所有匹配器都匹配才匹配, short circuits (很难懂的一个词,意译是短路,感觉不对,就没有翻译)(像 Java &&)
- anyOf - 如果任何匹配器匹配就匹配, short circuits (像 Java ||)
- not - 如果包装的匹配器不匹配器时匹配,反之亦然
- 对象
- equalTo - 测试对象相等使用Object.equals方法
- hasToString - 测试Object.toString方法
- instanceOf, isCompatibleType - 测试类型
- notNullValue, nullValue - 测试null
- sameInstance - 测试对象实例
- Beans
- hasProperty - 测试JavaBeans属性
- 集合
- array - 测试一个数组元素test an array’s elements against an array of matchers
- hasEntry, hasKey, hasValue - 测试一个Map包含一个实体,键或者值
- hasItem, hasItems - 测试一个集合包含一个元素
- hasItemInArray - 测试一个数组包含一个元素
- 数字
- closeTo - 测试浮点值接近给定的值
- greaterThan, greaterThanOrEqualTo, lessThan, lessThanOrEqualTo - 测试次序
- 文本
- equalToIgnoringCase - 测试字符串相等忽略大小写
- equalToIgnoringWhiteSpace - 测试字符串忽略空白
- containsString, endsWith, startsWith - 测试字符串匹配
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;
@Test
public void testHamcrest(){
// 比较50是否和50相等
assertThat(50, equalTo(50));
// 50是否大于30并且小于60
assertThat("错误",50, allOf(greaterThan(30), lessThan(60)));
// 判断字符串是否以.txt结尾
assertThat("错误", "abc.txt", endsWith(".txt")); }
2. TestSuit
package com.fjnu.util; import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses; // RunWith表示这个类是一个suite的类
@RunWith(Suite.class)
// 说明这个类中包含哪些测试组建
@SuiteClasses({TestA.class,
TestB.class,
TestCalculate.class})
public class TestSuit {
/*
* 测试原则:
* 1、建议创建一个专门的source folder--->test来编写测试类代码
* 2、测试类的包应该保持和需要测试的类一致
* 3、测试单元中的每个测试方法都必须可以独立执行,没有次序,不能有任何互相依赖
*/ }
然后直接运行TestSuit这个类就可以测试所选的测试类了。
junit学习笔记(二):hamcrest和TestSuit的更多相关文章
- JDBC学习笔记二
JDBC学习笔记二 4.execute()方法执行SQL语句 execute几乎可以执行任何SQL语句,当execute执行过SQL语句之后会返回一个布尔类型的值,代表是否返回了ResultSet对象 ...
- WPF的Binding学习笔记(二)
原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...
- AJax 学习笔记二(onreadystatechange的作用)
AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...
- [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计
源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...
- JMX学习笔记(二)-Notification
Notification通知,也可理解为消息,有通知,必然有发送通知的广播,JMX这里采用了一种订阅的方式,类似于观察者模式,注册一个观察者到广播里,当有通知时,广播通过调用观察者,逐一通知. 这里写 ...
- java之jvm学习笔记二(类装载器的体系结构)
java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...
- Java IO学习笔记二
Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...
- 《SQL必知必会》学习笔记二)
<SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...
- NumPy学习笔记 二
NumPy学习笔记 二 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(二) indigo tools
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
随机推荐
- WPF中常用控件的属性
Source = new BitmapImage( new Uri( WangCaiConfig.GetCurrentDirectory() + imgStr, UriKind.RelativeOrA ...
- Mysql 批量杀死进程
正常情况下kill id,即可,但是有时候某一异常连接特别多的时候如此操作会让人抓狂,下面记录下小方法: use information_schema; select concat('kill ',i ...
- R与数据分析旧笔记(⑦)回归诊断
回归诊断 回归诊断 1.样本是否符合正态分布假设? 2.是否存在离群值导致模型发生较大误差? 3.线性模型是否合理? 4.误差是否满足独立性.等方差.正态分布等假设条件? 5.是否存在多重共线性 正态 ...
- npm总是安装不成功,而且很慢?
什么方法解决: 在cmd 里面先运行 npm config set registry "http://registry.npm.taobao.org" 然后再安装npm 就会很快 ...
- CSS完美兼容IE6/IE7/IE8/IE9/IE10的通用方法
关于CSS对各个浏览器兼容已经是老生常谈的问题了, 网络上的教程遍地都是.以下内容没有太多新颖, 纯属个人总结, 希望能对初学者有一定的帮助. 一.CSS HACK 以下两种方法几乎能解决现今所有HA ...
- java Socket 列子 一些参数设置比较全
http://blog.csdn.net/a19881029/article/details/11596945
- ZOJ 3209 Treasure Map 精确覆盖
题目链接 精确覆盖的模板题, 把每一个格子当成一列就可以. S忘记初始化TLE N次, 哭晕在厕所...... #include<bits/stdc++.h> using namespac ...
- HTML编码的用户输入
public string Browse(string genre) { returen HttpUtility.HtmlEncode(genre); } HttpUtility.HtmlEncode ...
- C#对象赋值出现的诡异问题,或许你也遇到过,有待你的解决
前言:今天在代码中,又出现了这个问题,就是对象赋值给一个新的对象时,然后更改新对象中的属性,就会把老对象的值也更改,以前也遇到这个问题,只是没有深究,今天刚好又遇到了此问题,我决定写下来,和大家一起分 ...
- SQL Server 数据库所有者
1. 数据库所有者应当永远是 sa 用户 2. 改变数据库的所有者 alter authorization on database :: databaseName to sa; -- 这一句话把数据库 ...