使用Hamcrest增强JUnit的测试能力
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的测试能力的更多相关文章
- JUnit中测试异常抛出的方法
最近在做TWU关于TDD的作业,对JUnit中测试异常抛出的方法进行了一些学习和思考. 在进行单元测试的时候有的时候需要测试某一方法是否抛出了正确的异常.例如,我有一个方法,里面对一个List进行读取 ...
- junit参数化测试的使用方法
JUnit参数化测试的五个步骤:(1)为准备使用参数化测试的测试类指定特殊的运行器 org.junit.runners.Parameterized.(2)为测试类声明几个变量,分别用于存放期望值和测试 ...
- JAVAEE——spring02:使用注解配置spring、sts插件、junit整合测试和aop演示
一.使用注解配置spring 1.步骤 1.1 导包4+2+spring-aop 1.2 为主配置文件引入新的命名空间(约束) 1.3 开启使用注解代替配置文件 1.4 在类中使用注解完成配置 2.将 ...
- junit参数化测试
在前面的junit4初体验中我就说过,junit参数化测试是一只小怪兽,只逼编码痛点,现在我们这里来整理一下. 看过我前面的那篇初体验的就会发现一个问题,我们的测试代码大量的重复了.在这里先贴出原来的 ...
- Junit核心——测试集(TestSuite)
关于测试集,实质就是包含若干个测试类的集合,通过一个具体的实例,让我们来了解一下Junit的测试集 package org.yezi.junit; public class Calcaute { pu ...
- 06-编写Hibernate API编写访问数据库的代码,使用Junit进行测试
用到的注解: @Test:测试方法 @Before:初始化方法. @After:是否资源. 先执行Befere,然后执行Test,最后执行After. 第一步:新建一个Junit目录. 第二步:取名 ...
- Hibernate初探之单表映射——使用Junit进行测试
编写一个Hibernate例子 第四步:使用Junit进行测试 三个常用的注解标签 @Test:测试方法 @Before:初始化方法 @After:释放资源 执行顺序:Before注解标签下的方法 ...
- spring-注解配置-junit整合测试-aop
1 使用注解配置spring 1.1 步骤 导包4+2+spring-aop 1.为主配置文件引入新的命名空间(约束) 2.开启使用注解代理配置文件 3.在类中使用注解完成配置 1.2 将对象注册到容 ...
- Junit mockito 测试Controller层方法有Pageable异常
1.问题 在使用MockMVC+Mockito模拟Service层返回的时候,当我们在Controller层中参数方法调用有Pageable对象的时候,我们会发现,我们没办法生成一个Pageable的 ...
随机推荐
- 被忽视的META标签之特效
在web设计中使用js可以实现很多的页面特效,然而很多人却忽视了HTML标签中META标签的强大功效,其实meta标签也可以实现很多漂亮的页面过渡效果. META标签是HTML语言HEAD区的一个辅助 ...
- C嵌入汇编
概述:linux内核源码中,有很多C语言中嵌入了汇编语句,如何理解这些汇编语句,对理解内核有很重要的作用. 具有输入和输出参数的嵌入式汇编语句的基本格式为: asm("汇编语句" ...
- spring获取bean 实例
ApplicationContext ctx = new ClassPathXmlApplication("applicationContext.xml"); DataSource ...
- VMware vSphere服务器虚拟化实验六 vCenter Server 添加储存
VMware vSphere服务器虚拟化实验六 vCente ...
- c friend -- 友元
c friend -- 友元 友元用于突破protected 或者 private 保护的限制,首先要做的是在被访问者的类中声明是友元函数或者友元类.代码如下 #include <iostrea ...
- Spring MVC 数据验证——validate注解方式
1.说明 学习注解方式之前,应该先学习一下编码方式的spring注入.这样便于理解验证框架的工作原理.在出错的时候,也能更好的解决这个问题.所以本次博客教程也是基于编码方式.仅仅是在原来的基础加上注解 ...
- HDU 3853 期望概率DP
期望概率DP简单题 从[1,1]点走到[r,c]点,每走一步的代价为2 给出每一个点走相邻位置的概率,共3中方向,不动: [x,y]->[x][y]=p[x][y][0] , 右移:[x][y ...
- SVM入门(十)将SVM用于多类分类
源地址:http://www.blogjava.net/zhenandaci/archive/2009/03/26/262113.html 从 SVM的那几张图可以看出来,SVM是一种典型的两类分类器 ...
- jsp 中对jar 包的引用
<%@ page language="java" import="你需要的带包名的类" pageEncoding="gb2312"%& ...
- 如何使用git
本文不是谈论git具体命令的技术文章. 原文地址:http://blog.csdn.net/ffb/article/details/11206067 我之前发了一条关于git中如何处理中文文件名的微博 ...