JUnit——assertThat(acture,matcher)

使用hamcrest之前需要引入相关的jar包,包括hamcrest-core.1.3.jar和hamcrest-library-1.3.jar

具体引入的方法为:右击JUnit工程——build path——add external archives

这时在真正测试的时候,还需要引入静态方法import static org.hamcrest.Matchers.*;

package com.bjsxt.junit4.test;

import static org.junit.Assert.*;
import static org.hamcrest.Matchers.*;

import org.junit.Test;

import com.bjsxt.junit4.T;

public class TTest {

@Test
     public void testAdd() {
          int z = new T().add(5,3);
          assertThat(z,is(8));
     }

}
运行后会报错:
java.lang.SecurityException: class "org.hamcrest.Matchers"‘s signer

原因:

JUnit4和hamcrest包的class loader不是同一个

解决方案如下所示:
(1)删除junit包里面的jar包即eclipse自带的library:JUnit4——右击build path——remove
(2)引入最新版本的library的jar包

1.assertThat
2.使用hamcrest的匹配方法
a)更自然
3.示例
a)assertThat( n, allOf( greaterThan(1), lessThan(15) ) );
assertThat( n, anyOf( greaterThan(16), lessThan(8) ) );
assertThat( n, anything() );
assertThat( str, is( "bjsxt" ) );//字符串是不是”bjsxt”
assertThat( str, not( "bjxxt" ) );

b)assertThat( str, containsString( "bjsxt" ) );
assertThat( str, endsWith("bjsxt" ) );
assertThat( str, startsWith( "bjsxt" ) );
assertThat( n, equalTo( nExpected ) );
assertThat( str, equalToIgnoringCase( "bjsxt" ) );  //字符串忽略大小写是否相等
assertThat( str, equalToIgnoringWhiteSpace( "bjsxt" ) );  //字符串忽略空格是否相等

c)assertThat( d, closeTo( 3.0, 0.3 ) );//数值接近3.0 误差不超过0.3
assertThat( d, greaterThan(3.0) );
assertThat( d, lessThan (10.0) );
assertThat( d, greaterThanOrEqualTo (5.0) );//大于等于
assertThat( d, lessThanOrEqualTo (16.0) );

d)assertThat( map, hasEntry( "bjsxt", "bjsxt" ) );//map里面key-value判断
assertThat( iterable, hasItem ( "bjsxt" ) );
assertThat( map, hasKey ( "bjsxt" ) );
assertThat( map, hasValue ( "bjsxt" ) );

时间: 2024-10-05 16:14:36

JUnit——assertThat(acture,matcher)的相关文章

JUnit4学习笔记(三):assertThat语法与Matcher

一.使用JUnit的一般测试语法 org.junit.Assert类里有各种断言方法,大部分情况下我们会像下面这个例子一样编写测试: 1 public class AssertThatTest { 2 private int id = 6; 3 private boolean trueValue = true; 4 private Object nullObject = null; 5 private String msg = "Hello World"; 6 7 @Test 8 pu

Junit使用教程 转

几乎所有程序员都听说过Junit的大名,但不知真正懂得运用它的人有多少,我便是其中的一个小白. 知道Junit是用来测试的,但却把“宝刀”当成了“菜刀”用.为了从此不再菜鸟,特此总结整理了下Junit的知识点. 开始之前确保你的项目引入了junit-xxx.jar和hamcrest-core-xxx.jar这两个包,xxx是版本号. 一.建立Junit测试类 1. 右击test测试包,选择New-->Oher... 2. 在窗口中找到Junit,选择Junit Test Case 3. 输入名称

Junit测试集锦

前言: 一个程序从设计很好的状态开始,随着新的功能不断地加入,程序逐渐地失去了原有的结构,最终变成了一团乱麻.所以在开发过程中,对于程序员来说,测试是非常重要的.言归正传,开始Junit的测试. eclipse/Myeclipse中用Junit进行单元测试很方便,尤其是Junit4引入了很多Annotation注解以后. 一.核心--断言 断言是编写测试用例的核心实现方式,即期望值是多少,测试的结果是多少,以此来判断测试是否通过. 1. 断言核心方法 assertArrayEquals(expe

junit使用第一弹

知识点——断言 断言是编写测试用例的核心实现方式,即期望值是多少,测试的结果是多少,以此来判断测试是否通过. 1. 断言核心方法 assertArrayEquals(expecteds, actuals) 查看两个数组是否相等. assertEquals(expected, actual) 查看两个对象是否相等.类似于字符串比较使用的equals()方法 assertNotEquals(first, second) 查看两个对象是否不相等. assertNull(object) 查看对象是否为空

junit入门实例

1 junit测试用例代码 package junitTest; import static org.junit.Assert.*; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; /**  * @ClassName TestCase

单元测试——junit

一.前言 JUnit4对于JUnit3来说是一个历史性的改革.因为JUnit4引入了注解(annotation),通过解析注解就可以为测试提供相应的信息,抛弃JUnit3使用命名约束以及反射机制的方法.但是JUnit4.x与JUnit3.8向后是兼容的. 官网:http://junit.org/junit4/ 预备知识点: 源文件夹:在eclipse中在项目中,右键新建选项中有一个源文件夹(Source folder).其与普通文件夹的不同点表现在,他的图标是十字型的包裹图案. 源文件夹的特点:

Matchers and assertthat

assertThat的一般句型为: assertThat([value],[matcher statement]); 这种断言的优点有: 1.更具有可读性:该语法允许我们以“主谓宾”的方式来思考(assert "x is 3"), 而不是 assertEquals(assert "equals 3 x"). 2.易组合性:任何Matcher语句可以是否定的(not(s)),组合的(either(s).or(t)),映射到组合(each(s)),或者用自定义组合(af

Junit使用教程(二)

二.核心——断言 断言是编写测试用例的核心实现方式,即期望值是多少,测试的结果是多少,以此来判断测试是否通过. 1. 断言核心方法 assertArrayEquals(expecteds, actuals) 查看两个数组是否相等. assertEquals(expected, actual) 查看两个对象是否相等.类似于字符串比较使用的equals()方法 assertNotEquals(first, second) 查看两个对象是否不相等. assertNull(object) 查看对象是否为

Junit使用教程

二.核心--断言 断言是编写测试用例的核心实现方式,即期望值是多少,测试的结果是多少,以此来判断测试是否通过. 1. 断言核心方法 assertArrayEquals(expecteds, actuals) 查看两个数组是否相等. assertEquals(expected, actual) 查看两个对象是否相等.类似于字符串比较使用的equals()方法 assertNotEquals(first, second) 查看两个对象是否不相等. assertNull(object) 查看对象是否为