个性化阅读
专注于IT技术分析

Hamcrest Matchers介绍和用法

点击下载

Hamcrest是一个流行的框架, 可以帮助我们创建匹配器对象。它用于编写软件测试, 并以Java编程语言执行单元测试。 Hamcrest主要用于其他单元测试框架, 例如JUnit, jMockit, Mockito等。

Hamcrest框架旨在使测试更具可读性和可理解性。它使用静态方法来构造非常容易编写和理解的断言。它已被移植到C#, Python, PHP, JavaScript, C ++, Rust和Swift。

Hamcrest框架旨在容纳不同类型的单元测试框架。例如, Hamcrest可以与TestNG和JUnit(所有版本)一起使用。 Hamcrest框架还与模拟框架(例如JMock, EasyMock和Mockito)一起使用。

以下是Matchers类的一些重要方法:

方法类型和方法名称 描述
匹配器<java.lang.Object>任何() 它创建一个始终与对象匹配的匹配器, 而不管所检查的对象如何。
Matcher <T> describeAs(java.lang.String描述, Matcher <T> matcher, java.lang.object …值) 它用于包装现有的匹配器, 并覆盖其指定的描述。
匹配<T>是(匹配<T>个匹配) 它不仅保留了其行为, 而且还充当其他匹配器的形容词, 使测试更具可读性。
匹配<T> allOf(java.lang.Iterable <匹配<?Super T >>匹配器) 如果检查的对象与所有指定的匹配器匹配, 它将创建一个匹配器。
AnyOf <T> anyOf(java.lang.Iterable <Matcher <?Super T >>匹配器) 如果检查的对象与任何指定的匹配器匹配, 它将创建一个匹配器。
不匹配<T>(匹配<T>匹配) 它创建了一个包装现有匹配器的匹配器, 但是它反转了匹配对象的逻辑。
Matcher <T> equalTo(T操作数) 当被检查的对象在逻辑上等于指定的操作数时, 它将创建一个匹配器。
匹配<T> hasToString(匹配<?Super java.lang.String> toStringMatcher) 它创建一个匹配器, 该匹配器与任何检查的对象匹配, 该对象的toString方法返回的值满足指定的匹配器。
Matcher <T> instanceOf(java.lang.Class <?>>类型) 它创建一个匹配器, 当被检查的对象是指定类型的实例时, 该匹配器将通过调用Class.isInstance(Object)方法确定来匹配。
匹配器<java.lang.object> notNullValue() 它为常用的notNullValues创建快捷方式。
匹配<T> sameInstance(T目标) 它创建一个匹配器, 仅当被检查对象与指定目标对象是同一实例时才匹配。
Matcher <T> hasProperty(java.lang.String propertyName) 当被检查的对象具有指定名称的JavaBean属性时, 它将创建一个匹配器。
IsArray <T> array(Matcher <?super T >> … elementMatchers) 它创建一个匹配器, 该匹配器匹配其元素被指定匹配器说服的数组。
Matcher <java.util.Map <?扩展K , ?扩展V >> hasEntry(K键, V值) 当检查的地图包含至少一个键和值等于指定键和值的条目时, 它将为地图匹配创建匹配器。
匹配器<T []> hasItemInArray(匹配器<?Super T> elementMatcher) 当检查的数组包含至少一个应与指定的elementMatcher匹配的项时, 它将为匹配的数组创建一个匹配器。
Matcher <java.math.BigDecimal> closeTo(java.math.BigDecimal操作数, java.math.BigDecimal错误) 它创建BigDecimals的匹配器, 当检查的BigDecimal对象等于+/-误差范围内的指定操作数时, 该匹配器进行匹配。
Matcher <T>大于(T值) 它创建可比较对象的匹配器, 当检查的对象大于指定值时进行匹配。
Matcher <T> lessThan(T值) 它创建可比较对象的匹配器, 当检查的对象小于指定值时进行匹配。
Matcher <java.lang.String> equalToIgnoringCase(java.lang.String ExpectedString) 它创建一个String匹配器, 该字符串匹配器在检查的字符串等于指定的ExpectedString时匹配(忽略大小写)。

以下代码段显示了如何使用Hamcrest匹配器。它显示给定的列表或数组hasSize(5)包含五个项目。在这里, num是包含一些整数的列表的对象。

assertThat( num, hasSize(5));

下面的代码片段显示列表或数组中所有可用的项目都大于, 小于或大于或等于指定数目。

assertThat( num, everyItem(greaterThan(20)));
assertThat( num, everyItem(greaterThanOrEqualTo(33)));
assertThat( num, everyItem(lessThan(150)));

因此, 从前面的代码片段可以清楚地看出, Hamcrest框架使代码易于阅读和理解。

Hamcrest的例子

在这里, 我们将创建一个基本的Hamcrest示例。

HamcrestMockito.java

import static org.junit.Assert.*;
import java.util.Arrays;
import java.util.List;
import static org.hamcrest.Matchers.*;
import org.junit.Test;

public class HamcrestMockito {

	@Test
	public void test() {
		
		List<Integer> num = Arrays.asList(99, 123, 45, 148, 33);
		
		assertThat( num, hasSize(5));
		assertThat( num, hasItems(99, 45));
		
		assertThat( num, everyItem(greaterThan(20)));
		assertThat( num, everyItem(greaterThanOrEqualTo(33)));
		assertThat( num, everyItem(lessThan(150)));
	}
 }

输出如下

Hamcrest Matchers

赞(0)
未经允许不得转载:srcmini » Hamcrest Matchers介绍和用法

评论 抢沙发

评论前必须登录!