今天正好遇到了,就记一下
一.作用:
用与编写单元测试
二.assert 关键字
assert 理论上和 if类似, 但是assert 仅仅用于测试, 不能用于业务
如果发现断言无效, 则可能时ide没配置 ?
需要配置VM参数
eclipse:
idea:
三.JUnit 断言
几个方法:
- void assertEquals(boolean expected, boolean actual)
检查两个变量或者等式是否平衡 - void assertTrue(boolean expected, boolean actual)
检查条件为真 - void assertFalse(boolean condition)
检查条件为假 - void assertNotNull(Object object)
检查对象不为空 - void assertNull(Object object)
检查对象为空 - void assertSame(boolean condition)
assertSame() 方法检查两个相关对象是否指向同一个对象 - void assertNotSame(boolean condition)
assertNotSame() 方法检查两个相关对象是否不指向同一个对象 - void assertArrayEquals(expectedArray, resultArray)
assertArrayEquals() 方法检查两个数组是否相等
具体可以参考极客学院wiki:http://wiki.jikexueyuan.com/project/junit/using-assertion.html
四、使用断言
1.可以在预计正常情况下程序不会到达的地方放置断言 :assert false
2.断言可以用于检查传递给私有方法的参数。(对于公有方法,因为是提供给外部的接口,所以必须在方法中有相应的参数检验才能保证代码的健壮性)
3.使用断言测试方法执行的前置条件和后置条件
4.使用断言检查类的不变状态,确保任何情况下,某个变量的状态必须满足。(如age属性应大于0小于某个合适值)
不用断言
断言语句不是永远会执行,可以屏蔽也可以启用
因此:
1.不要使用断言作为公共方法的参数检查,公共方法的参数永远都要执行
2.断言语句不可以有任何边界效应,不要使用断言语句去修改变量和改变方法的返回值.