Hamcrest
在以前的junit測(cè)試中常用到斷言,但是沒有研究斷言的源代碼,最近在項(xiàng)目中采用swtbot時(shí)候,發(fā)現(xiàn)項(xiàng)目swtbot和junit底層都使用了hamcrest作為匹配工具 的.
SWTBot中finder中采用的是Hamcrest實(shí)現(xiàn)的.其中常用的如下:
1,WithText可以matcher有g(shù)etText方法的swt widget。
2,WithLabel用來matcher特定的Label和CLabel widget。
3,WithId用來matcher控件的屬性和值對(duì)。
4,WithMnemonic用來matcher有g(shù)etText方法且會(huì)有助記符&的widget。
5,WidgetOfType用來matcher控件的類名。
6, WithToolTip可以matcher有g(shù)etToolTipText方法的swt widget。
7,WithItem可以matcher有g(shù)etItems方法的swt widget。
8,WithStyle可以matcher有特定樣式的swt widget,如withStyle(SWT.PUSH,”SWT.PUSH”)。
9,WithRegex擴(kuò)展withText用來matcher文本正則表示的widget。
10,InGroup可以在一個(gè)group內(nèi)matcher swt widget。
11,InUIThread在一個(gè)UIThread內(nèi)matcher另一個(gè)matcher。
12, AllOf用來定義matcher方法集來區(qū)配swt widget。
Hamcrest是什么東西呢?
Hamcrest是一個(gè)書寫匹配器對(duì)象時(shí)允許直接定義匹配規(guī)則的框架.有大量的匹配器是侵入式的,例如UI驗(yàn)證或者數(shù)據(jù)過濾,但是匹配對(duì)象在書寫靈活的測(cè)試是最常用.本教程將告訴你如何使用Hamcrest進(jìn)行單元測(cè)試.
Hamcrest從一開始就設(shè)計(jì)結(jié)合不同的單元測(cè)試框架.例如,Hamcrest可以使用JUnit3和4和TestNG.(詳細(xì)查看完整Hamcrest發(fā)布中的例子).在一個(gè)現(xiàn)有的測(cè)試套件中遷移到使用Hamcrest風(fēng)格的斷言是很容易的,因?yàn)槠渌麛嘌燥L(fēng)格可以和Hamcrest的共存.
通過使用從mock Objects框架概念匹配器到Hamcrest匹配器橋接適配器Hamcrest也可以在mock objects框架中.例如,JMock 1系統(tǒng)規(guī)定是Hamcrest風(fēng)格.Hamcrest提供了一個(gè)JMock 1適配器來允許你在JMock 1測(cè)試中使用Hamcrest匹配器.JMock 2不需要這樣一個(gè)適配器層,因?yàn)樗辉O(shè)計(jì)使用Hamcrest作為一個(gè)匹配庫(kù).Hamcrest還提供了EasyMock 2適配器.同樣,詳細(xì)查看Hamcrest例子.
Hamcrest帶有一個(gè)有用的匹配器庫(kù).以下是一些最重要的.
核心
anything - 總是匹配,如果你不關(guān)心測(cè)試下的對(duì)象是什么是有用的
describedAs - 添加一個(gè)定制的失敗表述裝飾器
is - 改進(jìn)可讀性裝飾器 - 見下 “Sugar”
邏輯
allOf - 如果所有匹配器都匹配才匹配, short circuits (很難懂的一個(gè)詞,意譯是短路,感覺不對(duì),就沒有翻譯)(像 Java &&)
anyOf - 如果任何匹配器匹配就匹配, short circuits (像 Java ||)
not - 如果包裝的匹配器不匹配器時(shí)匹配,反之亦然
對(duì)象
equalTo - 測(cè)試對(duì)象相等使用Object.equals方法
hasToString - 測(cè)試Object.toString方法
instanceOf, isCompatibleType - 測(cè)試類型
notNullValue, nullValue - 測(cè)試null
sameInstance - 測(cè)試對(duì)象實(shí)例
Beans
hasProperty - 測(cè)試JavaBeans屬性
集合
array - 測(cè)試一個(gè)數(shù)組元素test an array’s elements against an array of matchers
hasEntry, hasKey, hasValue - 測(cè)試一個(gè)Map包含一個(gè)實(shí)體,鍵或者值
hasItem, hasItems - 測(cè)試一個(gè)集合包含一個(gè)元素
hasItemInArray - 測(cè)試一個(gè)數(shù)組包含一個(gè)元素
數(shù)字
closeTo - 測(cè)試浮點(diǎn)值接近給定的值
greaterThan, greaterThanOrEqualTo, lessThan, lessThanOrEqualTo - 測(cè)試次序
文本
equalToIgnoringCase - 測(cè)試字符串相等忽略大小寫
equalToIgnoringWhiteSpace - 測(cè)試字符串忽略空白
containsString, endsWith, startsWith - 測(cè)試字符串匹配
總結(jié)
- 上一篇: Eclipse自动补全功能轻松设置 ||
- 下一篇: bzoj 1036 树的统计Count