美文网首页
Junit——Assert断言

Junit——Assert断言

作者: 衣锦昼行 | 来源:发表于2019-06-27 11:01 被阅读0次

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

    相关文章

      网友评论

          本文标题:Junit——Assert断言

          本文链接:https://www.haomeiwen.com/subject/zhajqctx.html