首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Hamcrest简略学习

2013-11-08 
Hamcrest简单学习????? 在以前的junit测试中常用到断言,但是没有研究断言的源代码,最近在项目中采用swtbot

Hamcrest简单学习

????? 在以前的junit测试中常用到断言,但是没有研究断言的源代码,最近在项目中采用swtbot时候,发现项目swtbot和junit底层都使用了hamcrest作为匹配工具 的.

?

SWTBot中finder中采用的是Hamcrest实现的.其中常用的如下:

1,WithText可以matcher有getText方法的swt widget。

2,WithLabel用来matcher特定的Label和CLabel widget。

3,WithId用来matcher控件的属性和值对。

4,WithMnemonic用来matcher有getText方法且会有助记符&的widget。

5,WidgetOfType用来matcher控件的类名。

6, WithToolTip可以matcher有getToolTipText方法的swt widget。

7,WithItem可以matcher有getItems方法的swt widget。

8,WithStyle可以matcher有特定样式的swt widget,如withStyle(SWT.PUSH,”SWT.PUSH”)。

9,WithRegex扩展withText用来matcher文本正则表示的widget。

10,InGroup可以在一个group内matcher swt widget。

11,InUIThread在一个UIThread内matcher另一个matcher。

12,?AllOf用来定义matcher方法集来区配swt widget。

?

Hamcrest是什么东西呢?

Hamcrest是一个书写匹配器对象时允许直接定义匹配规则的框架.有大量的匹配器是侵入式的,例如UI验证或者数据过滤,但是匹配对象在书写灵活的测试是最常用.本教程将告诉你如何使用Hamcrest进行单元测试.

Hamcrest从一开始就设计结合不同的单元测试框架.例如,Hamcrest可以使用JUnit3和4和TestNG.(详细查看完整Hamcrest发布中的例子).在一个现有的测试套件中迁移到使用Hamcrest风格的断言是很容易的,因为其他断言风格可以和Hamcrest的共存.

通过使用从mock Objects框架概念匹配器到Hamcrest匹配器桥接适配器Hamcrest也可以在mock objects框架中.例如,JMock 1系统规定是Hamcrest风格.Hamcrest提供了一个JMock 1适配器来允许你在JMock 1测试中使用Hamcrest匹配器.JMock 2不需要这样一个适配器层,因为它被设计使用Hamcrest作为一个匹配库.Hamcrest还提供了EasyMock?2适配器.同样,详细查看Hamcrest例子.

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 - 测试字符串匹配

热点排行