[转自] http://huihai.iteye.com/blog/1994270

上一节说了junit的一些基本概念,主要使用assert做一些基本的判断。但很多时候使用assert做判断,并不方便,如果要判断某几个值是否为true或false,这时使用hamcrest来判断就会方便许多。hamcrest就是专门为增强junit来提供的框架。它可以有效的使用一些语义比较清楚的名字来做判断,一些常用的方法如下:

1、下面使用hamcrest在上一节的例子上继续操作。使用junit中的assertThat进行断言,第一个参数为实际值,第二个参数为hamcrest的表达式。

在上一节的测试类TestCalcuate中,先静态导入hamcrest包中的Matchers类,如下图:

2、添加下图所示的测试方法,在测试方法testHamcrest方法中,把junit与hamcrest结合使用,方法assertThat方法是junit的方法,greaterThan方法是hamcrest的方法,greaterThan判断第一个参数是否>第二个参数,这里就是判断50是否大于20。

3、如果要判断第一个参数是否大于20,并且小于60,这时可以使用正面的方式:

4、这时使用junit进行测试,如果测试通过,代表50确实大于49,小于60,如果出现如下错误:

5、其原因是因为资源路径里junit的jar包在hamcrest的jar包上面,java运行环境先从junit包中查找allOf方法,但是这里使用的是hamcrest的allOf方法。从资源路径里把两个包的路径换一下就可以了。如下图,选择hamcrest的jar包点击up,就可以反hamcrest的jar包放在junit的jar包的上面,java运行环境就会优先从hamcrest包中查allOf方法。

6、使用hamcrest还可以判断一个字符串是否以某个字符串开始或结尾。

7、在一个项目中,可能有很多的测试类,如果每个测试类都要点击运行,那么成百上千个类都需要测试,这会是个比较繁重的工作,这时可以使用可以使用junit的jar包中提供的Suite来解决这个问题,上面的例子中只有一个测试类名叫TestCalcuate,现在新建两个测试类,分别为TestA、TestB,如下所示:

    package cn.whp.util;  

    import org.junit.Test;  

    public class TestA {
@Test
public void testA(){
System.out.println("TestA");
} }
    package cn.whp.util;  

    import org.junit.Test;  

    public class TestB {
@Test
public void testB(){
System.out.println("TestB");
} }

8、然后新建一个测试类TestSuite,这个类可以把以上三个类,TestCalcuate、TestA、TestB,这三个测试方法同事进行测试。如下所示,

@RunWith(Suite.class)//代表以Suite来运行这个测试类

@SuiteClasses({TestA.class,TestB.class,TestCalcuate.class})//代表要测试的类有哪些。

    package cn.whp.util;  

    import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses; @RunWith(Suite.class)
@SuiteClasses({TestA.class,TestB.class,TestCalcuate.class})
public class TestSuite {
public void testSuite(){
System.out.println("TestA");
} }

如上操作完成后点击运行,就可以看到所有的测试方法全通过的信息,如下所示: 

测试原则:

1、建议创建一个专门的source folder--->test来编写测试类代码。上面例子就新建一个test的资源包。

2、测试类的包应该保持和需要测试的类一致。上面的例子中Calcuate类在src/cn/whp/util包中,相应的测试类就在test/cn/whp/util中。

3、测试单元中的每个测试方法都必须可以独立执行,不相互依赖,没有顺序。

JUnit学习之hamcrest、testSuite介绍及测试原则的更多相关文章

  1. junit学习笔记(二):hamcrest和TestSuit

    1. hamcrest hamcrest可以有效增加junit的测试能力,用一些对通俗语言来进行测试. Hamcrest 是一个测试的框架,它提供了一套通用的匹配符 Matcher,灵活使用这些匹配符 ...

  2. Junit 断言 assertThat Hamcrest匹配器

    junit断言总结本文参考了http://blog.csdn.net/wangpeng047/article/details/9628449一 junit断言1.JUnit框架用一组assert方法封 ...

  3. Junit学习笔记之五:MockMVC

    原文:https://blog.csdn.net/xiao_xuwen/article/details/52890730 随着RESTful Web Service的流行,测试对外的Service是否 ...

  4. 积极主动敲代码,使用Junit学习Java程序设计

    积极主动敲代码,使用JUnit学习Java 早起看到周筠老师在知乎的回答软件专业成绩很好但是实际能力很差怎么办?,很有感触. 从读大学算起,我敲过不下100本程序设计图书的代码,我的学习经验带来我的程 ...

  5. JUnit学习

    很早以前就知道JUnit也知道它用来做单元测试.今天突然又想到还是要学一下这个JUnit,不然说出去不知道怎么用JUnit做单元测试……作为一个程序员怪丢人的.第一篇JUnit不算是一个总结性的文章, ...

  6. 使用junit和eclemma进行简单的代码测试

    1.Junit和Hamcrest的安装 可以在https://mvnrepository.com/上面下载所需要的Junit和Hamcrest的jar包,然后在项目中新建一个lib文件夹,将下载好的j ...

  7. Junit使用的超简单介绍

    Junit使用的超简单介绍 前言:我对Junit了解的并不多,只是今天突然听到有人提到了它,而且现在时间还早,所以我觉得我不妨更一篇关于Junit4的超级超级简单的用法,全当是为了省去看官网demo的 ...

  8. Caffe学习系列(12):训练和测试自己的图片--linux平台

    Caffe学习系列(12):训练和测试自己的图片   学习caffe的目的,不是简单的做几个练习,最终还是要用到自己的实际项目或科研中.因此,本文介绍一下,从自己的原始图片到lmdb数据,再到训练和测 ...

  9. JUnit 学习资料

    JUnit 学习资料 网址 JUnit 入门教程(极客学院) http://wiki.jikexueyuan.com/project/junit/ 官方网站 https://junit.org/jun ...

随机推荐

  1. Web网站的几个QPS

    评价一个网站的"大小",处于视角的不同,有很多种衡量的方法,类似文章数,页面数之类的数据非常明显,也没有什么可以争议的.但对于并发来说,争议非常之多,这里就从一个技术的角度开始,谈 ...

  2. Spring--入门第二天

    一.通过工厂方法配置bean Spring 中有两种类型的 Bean, 一种是普通Bean, 另一种是工厂Bean, 即FactoryBean. 工厂 Bean 跟普通Bean不同, 其返回的对象不是 ...

  3. html5 存储方式

    localstorage(永久保存)&&sessionstorage(重新打开浏览器会消失) sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在 ...

  4. Jmeter接口测试-获取所有任务API

    获取所有任务 GET /api/tasks 接口获取所有的任务,该接口需要鉴权. 注意,默认情况下鉴权是关闭的.请确保app.coffee中的app.use(express_jwt(secret: j ...

  5. Java 起名规范

    注重代码编写规范: 1)都得遵循标识号的规范 2)不能以关键字,数字开头.也不要以拼音起名,最好用英文单词,单词组合来起名. 3)采用驼峰表示法,使用英文单词组合,单词首字母要大些,起到分割作用. - ...

  6. Redesign Your App for iOS 7 之 页面布局【转】

    前言 iOS7是目前iOS史上最颠覆的一次改版. 它的出现令人兴奋,因为它将会带我们进入一个全新的时代: 它的到来也让我们忧心,因为它颠覆了一切,包括我们过去做过的很多努力. 但是,相信大家乐意为这个 ...

  7. Fragment生命周期及在viewpager中的生命周期

    简介 本篇博客主要从一下三个方面介绍fragement的生命周期 1.fragment的生命周期及与Activity的生命周期的比较 2.FrameLayou布局添加.替换Fragment时fragm ...

  8. 如何让win32对话框居中显示

    在编写win32对话框程序,如果是用visual studio建的win32对话框程序,默认是不居中显示的,about 对话框也是这样的,用资源编辑器打开,可以在属性里面设置居中center 为tur ...

  9. MS SQL Server计算间隔时间

    开始需要,写了一个计算时间间隔的函数,可以参考: 得到的结果: 再列举一个例子:

  10. HTML4.0 需要掌握的主要内容

    常用标签: <html></html> 创建一个HTML文档 <head></head> 设置文档标题和其它在网页中不显示的信息 <title&g ...