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带有一个有用的匹配器库.以下是一些最重要的.