`
king_tt
  • 浏览: 2232614 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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

阅读更多

1. hamcrest

hamcrest可以有效增加junit的测试能力,用一些对通俗语言来进行测试.
Hamcrest 是一个测试的框架,它提供了一套通用的匹配符 Matcher,灵活使用这些匹配符定义的规则,程序员可以更加精确的表达自己的测试思想,指定所想设定的测试条件。比如,有时候定义的测试数据范围太精 确,往往是若干个固定的确定值,这时会导致测试非常脆弱,因为接下来的测试数据只要稍稍有变化,就可能导致测试失败(比如 assertEquals( x, 10 ); 只能判断 x 是否等于 10,如果 x 不等于 10, 测试失败);有时候指定的测试数据范围又不够太精确,这时有可能会造成某些本该会导致测试不通过的数据,仍然会通过接下来的测试,这样就会降低测试的价 值。 Hamcrest 的出现,给程序员编写测试用例提供了一套规则和方法,使用其可以更加精确的表达程序员所期望的测试的行为。
 
hamcrest常用的匹配器:
  • 核心
    • anything - 总是匹配,如果你不关心测试下的对象是什么是有用的
    • describedAs - 添加一个定制的失败表述装饰器
    • is - 改进可读性装饰器 - 见下 “Sugar”
  • 逻辑
    • allOf - 如果所有匹配器都匹配才匹配, short circuits (很难懂的一个词,意译是短路,感觉不对,就没有翻译)(像 Java &&)
    • anyOf - 如果任何匹配器匹配就匹配, short circuits (像 Java ||)
    • not - 如果包装的匹配器不匹配器时匹配,反之亦然
  • 对象
    • equalTo - 测试对象相等使用Object.equals方法
    • hasToString - 测试Object.toString方法
    • instanceOf, isCompatibleType - 测试类型
    • notNullValue, nullValue - 测试null
    • sameInstance - 测试对象实例
  • Beans
    • hasProperty - 测试JavaBeans属性
  • 集合
    • array - 测试一个数组元素test an array’s elements against an array of matchers
    • hasEntry, hasKey, hasValue - 测试一个Map包含一个实体,键或者值
    • hasItem, hasItems - 测试一个集合包含一个元素
    • hasItemInArray - 测试一个数组包含一个元素
  • 数字
    • closeTo - 测试浮点值接近给定的值
    • greaterThan, greaterThanOrEqualTo, lessThan, lessThanOrEqualTo - 测试次序
  • 文本
    • equalToIgnoringCase - 测试字符串相等忽略大小写
    • equalToIgnoringWhiteSpace - 测试字符串忽略空白
    • containsString, endsWith, startsWith - 测试字符串匹配
 
1. 要用junit中的assertThat来进行断言,记住静态导入
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;
 
2. 测试实例:
 	@Test
 	public void testHamcrest(){
 		// 比较50是否和50相等
 		assertThat(50, equalTo(50));
		// 50是否大于30并且小于60
		assertThat("错误",50, allOf(greaterThan(30), lessThan(60)));
		// 判断字符串是否以.txt结尾
		assertThat("错误", "abc.txt", endsWith(".txt"));

 	}


 
 
特别注意,如果使用junit4.10, 必须把hamcrest的jar包移到junit的jar包之前,否则组合条件allOf会抛出异常
 
 

2. TestSuit

如果有多个测试操作类,那么一个一个来运行测试就很不方便,所以通过testsuit可以把多个测试类“捆绑”起来,一起测试!
例如,下面这个工程有三个测试类,TestA, TestB和TestCalculate
我们可以再建一个类TestSuit,把这些类进行打包,然后同时运行测试。
package com.fjnu.util;

import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;

// RunWith表示这个类是一个suite的类
@RunWith(Suite.class)
// 说明这个类中包含哪些测试组建
@SuiteClasses({TestA.class,
			   TestB.class,
			   TestCalculate.class})
public class TestSuit {
	/*
	 *  测试原则:
	 *  1、建议创建一个专门的source folder--->test来编写测试类代码
	 *  2、测试类的包应该保持和需要测试的类一致
	 *  3、测试单元中的每个测试方法都必须可以独立执行,没有次序,不能有任何互相依赖
	 */

}



然后直接运行TestSuit这个类就可以测试所选的测试类了。

 
 
 
 
 
分享到:
评论

相关推荐

    junit-4.12.jar hamcrest-library-1.3.rc2.jar hamcrest-core-1.3.rc2.jar

    在进行单元测试时,通常将JUnit和Hamcrest结合使用,利用JUnit的测试结构和Hamcrest的匹配器来编写详尽的测试用例。例如,使用`@Test`注解标记测试方法,用`assertThat()`结合Hamcrest的匹配器来断言预期结果。这样...

    java单元测试包junit4.jar和hamcrest.core.jar

    testImplementation 'junit:junit:4.13.2' testImplementation 'org.hamcrest:hamcrest-core:1.3' } ``` 下载的`junit4.jar`和`hamcrest.jar`文件可以直接添加到项目的类路径中,或者如果使用的是Eclipse或...

    junit-4.11.jar hamcrest-core-1.3.jar

    在Java领域,Junit和Hamcrest是两个非常重要的单元测试工具。本文将深入探讨这两个库的使用方法、核心功能以及它们在实际开发中的价值。 首先,我们来看Junit。Junit是Java编程语言中最流行的单元测试框架之一,由...

    junit-4.11和hamcrest-core-1.3 的jar包

    Junit-4.11和Hamcrest-Core-1.3是两个关键的Java单元测试工具,广泛应用于Java项目的测试场景。 **Junit-4.11** 是JUnit库的一个版本,一个流行的开源测试框架,特别设计用于Java编程语言。JUnit提供了一种结构化的...

    junit4 jar包和hamcrest-all-1.3.jar

    源码文件junit-4.13-beta-1-sources.jar和hamcrest-all-1.3-sources.jar提供了JUnit和Hamcrest的实现细节,对于开发者来说,这是一个很好的学习资源。通过阅读源码,你可以深入了解这两个库的工作原理,理解它们如何...

    hamcrest-core-1.3.ORC2.jar:hamcrest的核心包,使用hamcrest框架必须引入的包

    《hamcrest-core-1.3.ORC2.jar:hamcrest核心包详解》 hamcrest-core-1.3.ORC2.jar是Java编程中一个至关重要的组件,它属于hamcrest框架的核心部分。hamcrest是一个用于匹配对象和表达式,进行断言的库,尤其在单元...

    Junit4环境搭建和Hamcrest初步

    本篇将重点介绍如何搭建Junit4的测试环境以及初步接触Hamcrest库,这将帮助你提升测试的质量和效率。 首先,我们来理解什么是Junit4。Junit4是JUnit框架的一个版本,它引入了注解(Annotation)来简化测试用例的...

    junit所需要的的jar包(junit-4.12.jar hamcrest-core-1.1.jar)

    这次提供的压缩包包含两个重要的JAR文件:junit-4.12.jar和hamcrest-core-1.1.jar,它们分别是JUnit框架的核心库和Hamcrest匹配器库。 首先,我们来详细了解一下JUnit。JUnit是由Erich Gamma和Kent Beck发起的一个...

    JavaSE测试类必备的两个jar包 ——junit-4.12.jar、hamcrest-core-1.3.jar

    testImplementation 'junit:junit:4.12' testImplementation 'org.hamcrest:hamcrest-core:1.3' ``` 这样,我们就可以在项目中自由地使用JUnit和Hamcrest进行单元测试,确保代码的质量和稳定性。 总结来说,`junit...

    Junit学习笔记~

    Junit学习笔记,希望有用~~~~~~~~~~~~~~~~~~~~~~

    JUnit学习笔记

    这篇博客“JUnit学习笔记”可能是博主GreatJone在深入学习JUnit过程中所做的记录和总结,包括了JUnit的基本概念、核心组件、使用方法以及一些高级特性。 首先,JUnit的核心理念是基于断言的测试,即编写特定的测试...

    junit hamcrest最新

    - **Hamcrest简介**:Hamcrest是一个匹配对象模式的库,它提供了丰富的匹配器(Matcher),可以用来构建高度可读的断言。在JUnit中,Hamcrest可以与JUnit的assertions结合使用,提高测试表达性。 - **Hamcrest特性...

    Junit和hamcrest.zip

    你可以解压并参考其中的内容,学习如何在你的项目中集成JUnit和Hamcrest,以及如何配置生成HTML测试报告。 总之,JUnit和Hamcrest是Java开发中的重要工具,它们可以帮助我们编写可维护的测试代码,并通过可视化的...

    junit-4.12.jar+hamcrest-core-1.3.jar JUnit单元测试必备jar包

    JUnit和Hamcrest是两个在Java单元测试中广泛使用的库。本压缩包包含的`junit-4.12.jar`和`hamcrest-core-1.3.jar`文件,正是进行JUnit单元测试所必需的依赖。 JUnit是一个开源的、基于Java语言的单元测试框架,由...

    junit-4.12.jar + hamcrest 亲测可用的

    标题中的“junit-4.12.jar + hamcrest 亲测可用的”指的是一个包含Junit 4.12版本和Hamcrest 1.3版本的测试框架组合,这个组合经过验证是能够正常工作的。在Java开发中,单元测试是确保代码质量的重要环节,而Junit...

    Junit4.12和依赖包

    testImplementation 'junit:junit:4.12' ``` 总的来说,Junit4.12为Java开发人员提供了强大的单元测试能力,其注解驱动的模型、丰富的断言方法、参数化测试和分类等功能使得测试代码更加简洁、易于维护。正确理解和...

    junit-4.12和hamcrest-core-1.3的jar包

    JUnit 4.12 和 Hamcrest Core 1.3 是两个在Java开发中广泛使用的单元测试框架的重要组件。本文将详细介绍这两个库的功能、用途以及如何在Eclipse集成开发环境中使用它们进行单元测试。 JUnit是Java编程语言的一个...

    junit-4.12.rar包及依赖包

    这表明可能需要的不仅仅是JUnit核心库,还可能包括与之相关的依赖,比如Hamcrest库(用于匹配器和断言)或者其他的测试支持库。 "zk"标签可能指的是ZK(Zookeeper)客户端,这是一个分布式协调服务,通常用于管理...

    junit.jar + hamcrest-core.jar + hamcrest-library.jar

    Junit、hamcrest-core.jar和hamcrest-library.jar这三者是Java编程语言中进行单元测试的关键工具,尤其对于Java开发者来说,它们是不可或缺的。 首先,我们来详细了解一下Junit。Junit是一款开源的测试框架,它是...

Global site tag (gtag.js) - Google Analytics