自动化测试之—Hamcrest匹配器

本文介绍了自动化测试中Hamcrest匹配器的使用,包括其简述、常用API、自定义匹配器的实现方法,旨在展示如何通过Hamcrest提高测试代码的可读性和灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自动化测试之—Hamcrest匹配器

本来计划要写一点Espresso方面知识的,但是想到Espresso中好多控件或者断言都是使用Hamcrest匹配器,另一方面则是Hamcrest匹配器相比JUnit的Assert则显得更加优雅、轻便,更容易阅读。

简述

Hamcrest是用于编写匹配器对象的框架,允许以声明方式定义“匹配”规则。有许多情况下匹配器是不可估量的,例如UI验证或数据过滤,但是在编写灵活测试的领域中,匹配器反而是最常用的。

Hamcrest还是相对比较简单的,API也相对比较少,就从一个小例子说起吧。

假如要你要测试一个集合中是否包含三个元素中的一个,如果包含则断言真,否则为假。把集合的初始化放在@Before中,则用JUnit的Assert断言写法如下:

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;

import java.util.ArrayList;
import java.util.List;

import static org.junit.Assert.assertTrue;

/**
 * Created by star on 2017/8/3.
 */
@RunWith(JUnit4.class)
public class HamcrestTest {
   
   
    private List<String> hamcrestTestList;

    @Before
    public void setUp() {
        hamcrestTestList = new ArrayList<>();
        hamcrestTestList.add("first element");
        hamcrestTestList.add("second element");
        hamcrestTestList.add("third element");
    }

    @Test
    public void assertWithJunitTest() {
        assertTrue(hamcrestTestList.contains("first element")
                || hamcrestTestList.contains("second element")
                || hamcrestTestList.contains("third element"));
    }
}

assertWithJunitTest方法本身并难以理解,但是你第一眼看到它很可能不太明白它是做什么的,而且代码也不简练,而Hamcrest则正是为了简化断言,可以构建测试表达式的匹配器库。Hamcrest的书写方法如下:

import static org.hamcrest.CoreMatchers.anyOf;
import static
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值