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 - 測試字符串匹配
總結
- 上一篇: Eclipse自动补全功能轻松设置 ||
- 下一篇: bzoj 1036 树的统计Count