Junit——Assert断言

junit.framework包下的Assert提供了多个断言方法. 主用于比较测试传递进去的两个参数.Assert断言的使用比较简单,主要有以下函数:
Assert.assertEquals([String message],T expected,T actual)
比较两个参数是否相等,message是可选的消息,假如加入了该参数,则发生错误时会报告该消息。如果 expected,actual,返回true。否则调用 expected.equals(actual)来判断。
Assert.assertNotEquals([String message],T expected,T actual)
比较两个参数是否不相等,message是可选的消息,假如加入了该参数,则发生错误时会报告该消息。

Assert.assertSame([String message],T expected,T actual)
以expected==actual运算的结果来判断。
expected.equals(actual) 和 expected==actual 的差别在于。如果expected没有重写java.lang.Object的equals方法,那么就是两个java对象的内存地址比较,比较结果和 expected==actual的结果相同。如果expected重写了equals方法(比如GregorianCalendar,BigDecimal类),那么比较的结果不一定和expected==actual的结果相同。
Assert.assertNotSame([String message],T expected,T actual)
以expected != actual运算的结果来判断。如果expected没有重写java.lang.Object的equals方法,那么就是两个java对象的内存地址比较,比较结果和 expected != actual的结果相同。如果expected重写了equals方法(比如GregorianCalendar,BigDecimal类),那么比较的结果不一定和expected !=actual的结果相同。

Assert.assertTrue([String message],boolean condition)
如果表达式condition结果为真,则测试通过,message为可选信息,若有则condition结果为假时显示message的内容
Assert.assertFalse([String message],boolean condition)
如果表达式condition结果为假,则测试通过,message为可选信息,若有则condition结果为真时显示message的内容

Assert.assertArrayEquals([String message], Object[] expected, Object[] actual)
以最直接的方式比较数组:如果数组长度相同,且每个对应的元素相同,则两个数组相等,否则不相等。数组为空的情况也作了考虑。message为可选信息,若不相等则会打印message。

Assert.assertNotNull([String message], Object object)
断言object为空,message为可选信息,若不为空打印message
Assert.assertNotNull([String message], Object object)
断言object不为空,message为可选信息,若为空打印message

Assert.assertThat([String reason],T actual, Matcher matcher)
其中actual为需要测试的变量,matcher为使用Hamcrest的匹配符来表达变量actual期望值的声明;assertThat是Junit 4.4加入的新方法,理论上讲程序员可以只使用 assertThat 一个断言语句,结合 Hamcrest 提供的匹配符,就可以表达全部的测试思想。

核心匹配符

1、assertThat( T actual, allOf( greaterThan(number1), lessThan(numer2) ) )
allOf匹配符表明如果接下来的所有条件必须都成立测试才通过,相当于“与”(&&)

2、assertThat( T actual, anyOf( greaterThan(number1), lessThan(number2) ) )
anyOf匹配符表明如果接下来的所有条件只要有一个成立则测试通过,相当于“或”(||)

3、assertThat( T actual, anything() )
anything匹配符表明无论什么条件,永远为true

4、assertThat( T actual, is(T expected ) )
is匹配符表明如果前面actual等于expected,则测试通过

5、assertThat( T actual, not( T expected ) )
not匹配符和is匹配符正好相反,表明如果actual不等于expected,则测试通过

6、assertThat(T actual,comparesEqualTo(T expected))
comparesEqualTo表示将actual和expected进行比较,只要在"数值"上相等即测试通过,比如1和1,"1"和"1"

字符串相关匹配符

1、assertThat( T actual, containsString( String s ) )
containsString匹配符表明如果测试的字符串actual包含子字符串s则测试通过

2、assertThat( String actual, endsWith( String s ) )
endsWith匹配符表明如果测试的字符串actual以子字符串s结尾则测试通过

3、assertThat( String actual, startsWith( String s ) )
startsWith匹配符表明如果测试的字符串actual以子字符串s开始则测试通过

4、assertThat( T actual, equalTo( T excepted ) )
equalTo匹配符表明如果actual等于excepted则测试通过,equalTo可以测试数值之间,字符串之间和对象之间是否相等,相当于Object的equals方法

5、assertThat( String actual, equalToIgnoringCase( String s ) )
equalToIgnoringCase匹配符表明如果actual在忽略大小写的情况下等于s则测试通过

6、assertThat( String actual, equalToIgnoringWhiteSpace( String s ) )
equalToIgnoringWhiteSpace匹配符表明如果actual在忽略头尾的任意个空格的情况下等于s则测试通过,注意:字符串中的空格不能被忽略

数值相关匹配符

1、assertThat( T actual, closeTo( Number, precision ) )
closeTo匹配符表明如果所测试的浮点型数actual在Number±precision范围之内则测试通过

2、assertThat( T actual, greaterThan(Number) )
greaterThan匹配符表明如果所测试的数值actual大于Number则测试通过

3、assertThat( T actual, lessThan (Number) )
lessThan匹配符表明如果所测试的数值actual小于Number则测试通过

4、assertThat( T actual, greaterThanOrEqualTo (Number) )
greaterThanOrEqualTo匹配符表明如果所测试的数值actual大于等于Number则测试通过

5、assertThat( T actual, lessThanOrEqualTo (Number) )
lessThanOrEqualTo匹配符表明如果所测试的数值actual小于等于Number则测试通过

collection相关匹配符

1、assertThat( mapObject, hasEntry( "key", "value" ) )
hasEntry匹配符表明如果测试的Map对象mapObject含有一个键值为"key"对应元素值为"value"的Entry项则测试通过

2、assertThat( iterableObject, hasItem ( "element" ) )
hasItem匹配符表明如果测试的迭代对象iterableObject含有元素“element”项则测试通过

3、assertThat( mapObject, hasKey ( "key" ) )
hasKey匹配符表明如果测试的Map对象mapObject含有键值“key”则测试通过

4、assertThat( mapObject, hasValue ( "key" ) )
hasValue匹配符表明如果测试的Map对象mapObject含有元素值“value”则测试通过

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容