二、Hamcrest简介(必须导入hamcrest包)
1.harmcrest可以增强junit的测试能力,用一些相对通俗语言进行测试
要使用Junit的assertThat来进行断言
第一个参数为实际值,第二个参数为harmcrest表达式。
例如:assertTht("test",endsWith("t"));
特别注意:如果是junit4.10,必须将harmcrest架包,移到junit4.10之前。否则allOf会报错。
2. 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 - 测试字符串匹配
3.集成测试所有测试类
//RunWith表示这个类是suite类
RunWith(Suite.class)
//说明这个类包含了哪些测试组件
SuiteClasses({TestA.class,
TestB.class,
TestC.class})
public class TestSuite{
//测试原则:
//1、建议创建一个专门的source folder---test来编写测试类
//2、测试类的包应该与需要测试的类保持一致
//3、测试单元中的每个测试方法都必须可以独立执行,没有顺序,
测试方法之间不能有任何依赖性
}