您的位置:首页 > 其它

单元测试辅助工具Hamcrest详解

2016-12-27 14:25 190 查看
Hamcrest是一款用以编写matcher对象的框架,以类库的形式发布。一个matcher对象就是一个明确定义的匹配规则。

Hamcrest只适合用于编写Java单元测试,并不适用于UI验证或数据过滤。

使用Hamcrest的步骤如下:

1.静态导入类

import static org.hamcrest.Matchers.*;
import static org.hamcrest.MatcherAssert.assertThat;

说明,其中Matchers类提供了大量用以定义匹配规则的方法。
而assertThat()用以验证测试结果,从而可以不必与具体的测试框架绑定。

2.编写测试用例

...

@Test
public void oneTest(){
Biscuit thisBiscuit = new Biscuit("Ginger");
Biscuit thatBiscuit = new Biscuit("Ginger");
assertThat(thisBiscuit, eq(thatBiscuit));
}

注意这里assertThat()的用法。
如果在一个测试用例中有多个assertThat(),还可以为每个assertThat()起一个唯一的名,示例如下:

...
assertThat("name1", thisBiscuit, eq(thatBiscuit));
assertThat("name2", thisBiscuit, eq(thatBiscuit));
...

补充:常用的Matchers方法

anything()
is(),只为提高测试代码的可读性,没有实际意义
allOf()
anyOf()
not()
eq()
instanceOf()
sameInstance()
isCompatbleType()
notNullValue()
nullValue()
hasProperty()
array()
hasKey()
hasValue()
hasEntry()
hasItem()
closeTo()
greaterThan()
greaterThanOrEqualTo()
lessThan()
lessThanOrEqualTo()
equalToIgnoringCase()
equalToIgnoringWhiteSpace()

containsString()
endsWith()
startsWith()

除了Hamcrest提供的标准Matchers类,测试开发人员还可以定制扩展自己的Matchers类,此处从略。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息