Junit——Assert断言

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Junit——Assert断言相关的知识,希望对你有一定的参考价值。

参考技术A

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则测试通过

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”则测试通过

以上是关于Junit——Assert断言的主要内容,如果未能解决你的问题,请参考以下文章

junit测试assert各种断言用法

JUnit Test Assert

【Python】assert断言

2 个 JUnit 断言类之间的差异

C语言中assert断言的用法?

Robotium_断言方法assertissearch