一.什么是Assert
Assert 翻译为中文为“断言”,使用过 JUnit 的读者都熟知这个概念,它断定某一个实际的运行值和预期想一样,否则就抛出异常。Spring 对方法入参的检测借用了这个概念,其提供的 Assert 类拥有众多按规则对方法入参进行断言的方法,可以满足大部分方法入参检测的要求。
每个Assert的方法可以与java assert表达式进行比较。java assert表达式在运行时如果条件校验失败,则抛出Error,有趣的是,这些断言可以被禁用。
Spring Assert的方法有一些特点:
- 都是static方法
- 抛出IllegalArgumentException 或 IllegalStateException异常
- 第一个参数通常是需验证的对象或逻辑条件
- 最后参数通常是异常消息,用于验证失败时显示
- 消息可以作为String参数或Supplier 参数传输
尽管Spring Assert与其他框架的名称类似,如JUnit或其他框架,但其实没有任何共同之处。Spring Assert不是为了测试,而是为了调试。
二.详解
2.1逻辑断言
isTrue()
上面已经看到示例,其接受布尔条件,如果条件为假抛出IllegalArgumentException 异常。
state()
该方法与isTrue一样,但抛出IllegalStateException异常。
如名称所示,通常用在因对象的非法状态时,方法不能继续执行。假设骑车运行是不能加油,我们可以使用state方法断言:
2.2对象和类型断言
2.3文本断言
通常用来检查字符串参数
2.4Collection和map断言
2.5数组断言