Junit4中的新断言assertThat的是用方法

(转自:http://www.gn00.com/t-184116-1-1.html)

如果需要是用assertThat需要在项目中引入junit4的jar包,以及hamcrest-core.jar和hamcrest-library.jar
下面是常用断言的代码

import static org.hamcrest.Matchers.*;
 import static org.junit.Assert.assertThat;

 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;

 import org.junit.Before;
 import org.junit.Test;

 import com.lyh.share.model.User;

 public class UserDaoTest {

         private User test1;
         private User test2;

         @Before
         public void init(){
                 test1 = new User();
                 test1.setUsername("tt1");
                 test1.setPassword("123");
                 test1.setShares(50);
                 test2 = new User();
                 test2.setUsername("tt2");
                 test2.setPassword("321");
                 test2.setShares(20);
         }

         @Test
         public void findUser(){

                 /**数值匹配**/
                 //测试变量是否大于指定值
                 assertThat(test1.getShares(), greaterThan(50));
                 //测试变量是否小于指定值
                 assertThat(test1.getShares(), lessThan(100));
                 //测试变量是否大于等于指定值
                 assertThat(test1.getShares(), greaterThanOrEqualTo(50));
                 //测试变量是否小于等于指定值
                 assertThat(test1.getShares(), lessThanOrEqualTo(100));

                 //测试所有条件必须成立
                 assertThat(test1.getShares(), allOf(greaterThan(50),lessThan(100)));
                 //测试只要有一个条件成立
                 assertThat(test1.getShares(), anyOf(greaterThanOrEqualTo(50), lessThanOrEqualTo(100)));
                 //测试无论什么条件成立(还没明白这个到底是什么意思)
                 assertThat(test1.getShares(), anything());
                 //测试变量值等于指定值
                 assertThat(test1.getShares(), is(100));
                 //测试变量不等于指定值
                 assertThat(test1.getShares(), not(50));

                 /**字符串匹配**/
                 String url = "http://www.taobao.com";
                 //测试变量是否包含指定字符
                 assertThat(url, containsString("taobao"));
                 //测试变量是否已指定字符串开头
                 assertThat(url, startsWith("http://"));
                 //测试变量是否以指定字符串结尾
                 assertThat(url, endsWith(".com"));
                 //测试变量是否等于指定字符串
                 assertThat(url, equalTo("http://www.taobao.com"));
                 //测试变量再忽略大小写的情况下是否等于指定字符串
                 assertThat(url, equalToIgnoringCase("http://www.taobao.com"));
                 //测试变量再忽略头尾任意空格的情况下是否等于指定字符串
                 assertThat(url, equalToIgnoringWhiteSpace("http://www.taobao.com"));

                 /**集合匹配**/

                 List<User> user = new ArrayList<User>();
                 user.add(test1);
                 user.add(test2);

                 //测试集合中是否还有指定元素
                 assertThat(user, hasItem(test1));
                 assertThat(user, hasItem(test2));

                 /**Map匹配**/
                 Map<String,User> userMap = new HashMap<String,User>();
                 userMap.put(test1.getUsername(), test1);
                 userMap.put(test2.getUsername(), test2);

                 //测试map中是否还有指定键值对
                 assertThat(userMap, hasEntry(test1.getUsername(), test1));
                 //测试map中是否还有指定键
                 assertThat(userMap, hasKey(test2.getUsername()));
                 //测试map中是否还有指定值
                 assertThat(userMap, hasValue(test2));
         }

 }
时间: 2024-10-12 12:43:32

Junit4中的新断言assertThat的是用方法的相关文章

JUnit4 中@AfterClass @BeforeClass @after @before的区别对比

  @BeforeClass and @AfterClass @Before and @After 出现次数 在一个类中只可以出现一次 在一个类中可以出现多次,即可以在多个方法的声明前加上这两个Annotaion标签,执行顺序不确定 方法名限制 方法名不做限制 方法名不做限制 运行次数 在类中只运行一次 在每个测试方法之前或者之后都会运行一次 执行顺序 @BeforeClass父类中标识了该Annotation的方法将会先于当前类中标识了该Annotation的方法执行.@AfterClass

如何在github的wiki中添加新的图片

本文简单介绍在github的wiki中添加新的图片对方法 在github的wiki中,可以展现图片,可是,怎么添加图片,从网页上展示的信息来看,不是很清楚. 添加图片,基本上就是通过下面几步来完成: 1. clone wiki 2.创建图片目录 3.在图片目录中添加图片 4.在wiki中引用图片 具体操作步骤如下: 1. clone wiki git clone https://github.com/xx/xx.wiki.git 该url可以从clone this wiki locally 拿到

MFC中添加新的对话框

MFC工程中,除了系统自动生成的一些对话框之外,还需要根据自己的需求,添加新的对话框.这里总结下自己最近使用的方法. 首先,找到Resource View中自己新建的工程,然后右键,选择Add Class,然后弹出的对话框中对新增的类进行设置,在Base Class需要选择CDialog,然后输入新增类的名称之后,就新增了一个类.这个类不仅有对应的头文件还有.cpp文件,以及一个与这个类对应的UI界面. 然后,需要将新增的类对应的头文件包含到它对应的父类的头文件中,同时在protected域中声

Swift2.2中的新变化

原文链接点击这里 Swift2.2已经更新了,这次更新去除了一些难用的语法还添加了一些缺失的特性,并且还弃用了一些有争议的语言特性.这篇文章将详细介绍Swift2.2中的一些主要的变化和一些细微的改变,还会展示一些实际的代码例子来让你更快的上手Swift2.2. 1. ++ 和 – 被弃用了 Swift 2.2正式地弃用了++和–操作符,意味着他们仍然可用但当你用到时会得到哦一条警告.弃用一般是完全移除的第一步,因此在这种情况下在Swift 3.0中这两个操作符将会被移除掉. 在使用这两个操作符

OpenWRT中添加新设备支持

这里还是向OpenWRT中添加对小度路由的支持向 target/linux/ramips/image/makefile中写入新设备 image/build/profile/mt7620a_CLZ=$(call buildFirmware/Default8M/$(1),$(1),mt7620a_clz,MT7620a_CLZ) $(call image/Build/Profile/MT7620a_CLZ,$(1)) base-files中的一些可用配置: base-files/etc/diag.s

如何在iOS开发中添加新的字体

iOS 开发默认字体是 Heiti SC ,即我们常用的「黑体-简」 用过一段时间后,就会发现字体过于单调了 ,那么怎么在iOS开发中添加新的字体呢 ,这里教你两种方法. 1.使用系统自带的字体 搜索fonts,不难发现,系统中是有不少字体的,而这些字体也是都是可以使用的. 这些字体只用时可以通过代码来设置,也可以直接来设置,方法很简单: 将text的属性设置为Attributed,再选择自己想要的系统字体就OK啦 2.使用自己从网上下载的字体 首先从网上下载自己喜欢的字体,将下载好的字体拖入当

向SQL Server 现有表中添加新列并添加描述.

注: sql server 2005 及以上支持. 版本估计是不支持(工作环境2005,2008). 工作需要, 需要向SQL Server 现有表中添加新列并添加描述. 从而有个如下存储过程. (先附上存储过程然后解释) 代码 /********调用方法********** 作用: 添加列并添加列描述信息 调用: exec [SetColumnInfo] '表名', '列名', N'列说明,描述','列类型{默认:NVARCHAR(50)}','列默认值{默认:NULL}' *********

向Java枚举类型中添加新方法

除了不能继承enum之外,可将其看做一个常规类.甚至可以有main方法. 注意:必须先定义enum实例,实例的最后有一个分号. 下面是一个例子:返回对实例自身的描述,而非默认的toString返回枚举实例的名字. public enum Color { RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4); // 成员变量 private String nam

TASK_KILLABLE:Linux 中的新进程状态【转】

转自:https://www.ibm.com/developerworks/cn/linux/l-task-killable/index.html 新的睡眠状态允许 TASK_UNINTERRUPTIBLE 响应致命信号 Linux® kernel 2.6.25 引入了一种新的进程状态,名为 TASK_KILLABLE,用于将进程置为睡眠状态,它可以替代有效但可能无法终止的 TASK_UNINTERRUPTIBLE 进程状态,以及易于唤醒但更加安全的 TASK_INTERRUPTIBLE 进程状