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()方法*/@Testpublic void testHamcrest(){//50是否大于20Assert.assertThat(50, Matchers.greaterThan(20));//50是否大于或等于50Assert.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"));}
}

转载于:https://www.cnblogs.com/dyllove98/p/3180039.html

使用Hamcrest增强JUnit的测试能力相关推荐

  1. junit数据驱动测试_使用Junit和Easytest进行数据驱动的测试

    junit数据驱动测试 在本文中,我们将看到如何使用Junit进行数据驱动的测试. 为此,我将使用一个名为EasyTest的库. 我们知道,对于TestNG,它已内置了数据提供程序. 通过简单的测试, ...

  2. junit 测试 异常_使用JUnit规则测试预期的异常

    junit 测试 异常 这篇文章展示了如何使用JUnit测试预期的异常. 让我们从我们要测试的以下类开始: public class Person {private final String name ...

  3. 在JUnit中测试预期的异常

    单元测试用于验证一段代码是否按照开发人员的预期运行. 有时,这意味着检查代码是否也会引发预期的异常. JUnit是Java单元测试的标准,并提供了几种验证抛出异常的机制. 本文探讨了这些选项及其相对优 ...

  4. 使用JUnit规则测试预期的异常

    这篇文章展示了如何使用JUnit测试预期的异常. 让我们从我们要测试的以下类开始: public class Person {private final String name;private fin ...

  5. junit5_在JUnit中测试预期的异常

    junit5 单元测试用于验证一段代码是否按照开发人员的预期运行. 有时,这意味着检查代码是否也会引发预期的异常. JUnit是Java单元测试的标准,并提供了几种验证抛出异常的机制. 本文探讨了这些 ...

  6. junit数据驱动测试_JUnit 5-早期测试驱动器-第1部分

    junit数据驱动测试 重要要点 JUnit 5即将发布! 它经过改进的API和扩展模型大大改善了" JUnit工具". 模块化体系结构使" JUnit平台"可 ...

  7. 重构职场竞争力之测试能力提升方法

    重构职场竞争力之测试能力提升方法 通过,这十几年来一直在金融外包公司就职,在不同城商行出差协助公司处理不同项目的性能测试与优化,加上经历过08年的金融危机,看过多家企业倒闭.裁员等问题,明白一家企业在 ...

  8. 示波器测ab相_独有功能,剑走偏锋,示波器鲜为人知的10大特异功能|测试能力篇...

    工程师经常利用示波器观察各种不同信号幅度随时间变化的波形曲线,还可以用它测试各种不同的电量,如电压.电流.频率.相位差.调幅度等等. 无论是电源.汽车.嵌入式设计还是射频行业,泰克示波器在不同行业中的 ...

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

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

最新文章

  1. php $this self,php this self 用法与区别
  2. iOS设备屏幕像素总览
  3. 2010:关于 Web 的 30 个预测
  4. VTK:RenderMan之PolyDataRIB
  5. C# 温故知新 基础篇(7) 接口思维导图
  6. curl 访问不到html_嵌入式工程师入门前后端系列1:访问一个网页
  7. 连接postgresql
  8. 程序员在家办公没显示屏,我被领导鄙视了
  9. python文件重命名加日期_Python文件创建日期和重命名 - 批评请求
  10. Atiitt 流水线停顿问题与解决方法 1. 流水线技术方式分类 1 2. 但在实际中,会出现2种情况使流水线停顿下来或不能启动: 2 2.1. 1、多个任务在同一时间周期内争用同一个流水段 2 2
  11. filenet安装-总结安装一天的成果
  12. ora01031权限不足linux,ORA-01031:权限不足
  13. 基于matlab的微分例题,matlab程序设计常微分方程编程例题答案数学.doc
  14. 大学生端午节网页作业制作 学生端午节日网页设计模板 传统文化节日端午节静态网页成品代码下载 端午节日网页设计作品
  15. SICP 习题2.61~2.62 排序表示的adjoin和union-set函数
  16. 对 云寻觅贴吧(http://tieba.yunxunmi.com/)的简要分析
  17. ansible meta目录
  18. 伦敦 quant_伦敦统一用户组(LUUG)见面v2.0
  19. Android游戏:弹弹球(打砖块)
  20. 使用GF集进行构型综合的方法之总结

热门文章

  1. 【OpenGL从入门到精通(一)】Windows搭建OpenGL的渲染环境,并初始化一个OPenGL窗口
  2. python就业班 miniweb框架_mini-web框架
  3. C语言Main函数到底有几种,你真的懂吗?
  4. php system 执行失败,PHP 执行 system、exec 等函数发生错误
  5. springboot 多线程_redis官方推荐:SpringBoot用这个,一键多线程
  6. markdown 流程图_Markdown 进阶技能:用代码画流程图(编程零基础也适用)
  7. css清除浮动的几种方法_web前端学习路线分享CSS浮动-清除浮动篇
  8. 电源模块的安全设计和热设计
  9. java封装拦截请求_Retrofit,OkHttp拦截器,RxJava封装请求网络
  10. 御龙在天手游怎么不显示服务器了,御龙在天手游进不去怎么办 闪退原因及解决办法...