使用Hamcrest增强JUnit的测试能力

时间:2022-09-09 16:36:44
package com.jadyer.service;

import java.util.HashMap;
import java.util.Map; import org.hamcrest.Matchers;
import org.junit.Assert;
import org.junit.Test; /**
* 使用Hamcrest增强JUnit的测试能力
* @see Hamcrest框架提供了一些相对通俗并高效的方法来进行一些junit比较困难的测试
* @see 比如比较数值大小、测试对象类型、测试数组元素等等
* @see Hamcrest下载地址为https://code.google.com/p/hamcrest/downloads/list
* @see JUnit下载地址为https://github.com/junit-team/junit/wiki/Download-and-Install
* @see ------------------------------------------------------------------------------------------------
* @see 1)所需jar(有两个)
* @see junit-4.10.jar
* @see hamcrest-all-1.3.jar
* @see ------------------------------------------------------------------------------------------------
* @see 2)注意事项
* @see 测试时可能报告类似这个的异常java.lang.NoSuchMethodError: org.hamcrest.core.AllOf.allOf
* @see 这时只需将hamcrest.jar移到junit.jar的前面就可以了,否则组合条件如allOf、anyOff等都会抛此异常
* @see ------------------------------------------------------------------------------------------------
* @create Jul 6, 2013 5:11:27 PM
* @author 玄玉<http://blog.csdn.net/jadyer>
*/
public class TestByHamcrest {
/**
* 如果用的是JUnit-4.10,那么这里可以使用org.junit.Assert类,它提供了assertThat的功能
* 如果用的是JUnit低版本,如MyEclipse6.5自带的JUnit-4.3.1则未提供Assert.assertThat功能
* 这时可以使用hamcrest-all-1.3.jar自带的org.hamcrest.MatcherAssert.assertThat()方法
*/
@Test
public void testHamcrest(){
//50是否大于20
Assert.assertThat(50, Matchers.greaterThan(20));
//50是否大于或等于50
Assert.assertThat(50, Matchers.greaterThanOrEqualTo(50)); //50是否即大于20又小于60(allOf方法类似于Java中的&&)
Assert.assertThat(50, Matchers.allOf(Matchers.greaterThan(20), Matchers.lessThan(60)));
//50是否大于20或小于40(anyOf方法类似于Java中的||)
Assert.assertThat(50, Matchers.anyOf(Matchers.greaterThan(20), Matchers.lessThan(40))); //测试"abc.txt"是否以"txt"结束
Assert.assertThat("abc.txt", Matchers.endsWith("txt"));
Assert.assertThat("abc.txt", Matchers.startsWith("ab"));
Assert.assertThat("abc.txt", Matchers.containsString("c.t"));
Assert.assertThat(22+"aa", Matchers.hasToString("22aa"));
Assert.assertThat("http://blog.csdn.net/jadyer", Matchers.instanceOf(String.class));
Assert.assertThat("http://blog.csdn.net/jadyer", Matchers.notNullValue());
Assert.assertThat(null, Matchers.nullValue()); //针对集合的测试
String[] users = {"玄玉", "Jadyer"};
Assert.assertThat(users, Matchers.hasItemInArray("玄玉"));
Map<String, String> userMap = new HashMap<String, String>();
userMap.put("11", "玄玉");
userMap.put("22", "Jadyer");
userMap.put("33", "http://blog.csdn.net/jadyer");
Assert.assertThat(userMap, Matchers.hasKey("22"));
Assert.assertThat(userMap, Matchers.hasValue("http://blog.csdn.net/jadyer"));
}
}

使用Hamcrest增强JUnit的测试能力的更多相关文章

  1. JUnit中测试异常抛出的方法

    最近在做TWU关于TDD的作业,对JUnit中测试异常抛出的方法进行了一些学习和思考. 在进行单元测试的时候有的时候需要测试某一方法是否抛出了正确的异常.例如,我有一个方法,里面对一个List进行读取 ...

  2. junit参数化测试的使用方法

    JUnit参数化测试的五个步骤:(1)为准备使用参数化测试的测试类指定特殊的运行器 org.junit.runners.Parameterized.(2)为测试类声明几个变量,分别用于存放期望值和测试 ...

  3. JAVAEE——spring02:使用注解配置spring、sts插件、junit整合测试和aop演示

    一.使用注解配置spring 1.步骤 1.1 导包4+2+spring-aop 1.2 为主配置文件引入新的命名空间(约束) 1.3 开启使用注解代替配置文件 1.4 在类中使用注解完成配置 2.将 ...

  4. junit参数化测试

    在前面的junit4初体验中我就说过,junit参数化测试是一只小怪兽,只逼编码痛点,现在我们这里来整理一下. 看过我前面的那篇初体验的就会发现一个问题,我们的测试代码大量的重复了.在这里先贴出原来的 ...

  5. Junit核心——测试集(TestSuite)

    关于测试集,实质就是包含若干个测试类的集合,通过一个具体的实例,让我们来了解一下Junit的测试集 package org.yezi.junit; public class Calcaute { pu ...

  6. 06-编写Hibernate API编写访问数据库的代码,使用Junit进行测试

    用到的注解: @Test:测试方法 @Before:初始化方法. @After:是否资源. 先执行Befere,然后执行Test,最后执行After. 第一步:新建一个Junit目录. 第二步:取名 ...

  7. Hibernate初探之单表映射——使用Junit进行测试

    编写一个Hibernate例子 第四步:使用Junit进行测试 三个常用的注解标签 @Test:测试方法 @Before:初始化方法 @After:释放资源 执行顺序:Before注解标签下的方法  ...

  8. spring-注解配置-junit整合测试-aop

    1 使用注解配置spring 1.1 步骤 导包4+2+spring-aop 1.为主配置文件引入新的命名空间(约束) 2.开启使用注解代理配置文件 3.在类中使用注解完成配置 1.2 将对象注册到容 ...

  9. Junit mockito 测试Controller层方法有Pageable异常

    1.问题 在使用MockMVC+Mockito模拟Service层返回的时候,当我们在Controller层中参数方法调用有Pageable对象的时候,我们会发现,我们没办法生成一个Pageable的 ...

随机推荐

  1. composer更新不成功,启用国内镜像网站的配置更改办法

    通过 composer config -l -g 命令可以列出 composer 的全局配置信息 [home] 配置项就是 composer 的主目录 修改config.json { "co ...

  2. Asp&period;Net MVC3 简单入门详解过滤器Filter

    http://www.cnblogs.com/boruipower/archive/2012/11/18/2775924.html 前言 在开发大项目的时候总会有相关的AOP面向切面编程的组件,而MV ...

  3. 《OpenCV入门》(三)

    这部分主要讲形态学的,回头把代码跑跑再来说下代码的感受:http://blog.csdn.net/poem_qianmo/article/details/24599073

  4. &lbrack;51NOD1181&rsqb;质数中的质数(质数筛法)(欧拉筛)

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1181 思路:欧拉筛出所有素数和一个数的判定,找到大于n的最小质 ...

  5. &lbrack;King&period;yue&rsqb;VS2012 无法启动IIS Express Web服务器的解决方案

    打开VS2012解决方案资源管理器 -> 点选 Web 项目选择 -> 属性 -> Web -> 选择“使用 Visual Studio 开发服务器” -> 选中“自动分 ...

  6. NodeJS定时任务

    在实际开发项目中,会遇到很多定时任务的工作.比如:定时导出某些数据.定时发送消息或邮件给用户.定时备份什么类型的文件等等 一般可以写个定时器,来完成相应的需求,在node.js中自已实现也非常容易,接 ...

  7. 从壹开始前后端分离 &lbrack; Vue2&period;0&plus;&period;NET Core2&period;1&rsqb; 十五 &boxV;Vue基础:JS面向对象&amp&semi;字面量&amp&semi; this字

    缘起 书接上文<从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十四 ║ VUE 计划书 & 我的前后端开发简史>,昨天咱们说到了以我的经历说明的web开发经历的 ...

  8. NOI-OJ 1&period;13 ID&colon;5 素数回文数的个数

    整体思路 使用埃拉拖色尼算法提前计算出1000以内的素数表. 设计一个回文判断函数isHW(int n),难点在于数字回文的判断.一个简单的方法是将数字n使用sprintf输出在一个数组中,然后从数组 ...

  9. 安装haproxy和haproxy命令

    HaProxy系列文章:http://www.cnblogs.com/f-ck-need-u/p/7576137.html 1.安装haproxy CentOS自带了haproxy,但可能版本比较老. ...

  10. Android性能优化-线程性能优化

    原文链接:Better Performance through Threading 线程的性能 熟练使用Android上的线程可以帮助你提高应用程序的性能. 本篇文章讨论了使用线程的几个方面:使用UI ...