Preconditions和Assert

一 Preconditions

1.作用:主要用在业务逻辑前,进行代码检验,避免过多的if语句

2.API:

常用的Preconditions.checkNotNull(XXX)和Preconditions.checkArgument(XXX)

方法声明(不包括额外参数)描述检查失败时抛出的异常
checkArgument(boolean)检查boolean是否为true,用来检查传递给方法的参数。IllegalArgumentException
checkNotNull(T)检查value是否为null,该方法直接返回value,因此可以内嵌使用checkNotNull。NullPointerException
checkState(boolean)用来检查对象的某些状态。IllegalStateException
checkElementIndex(int index, int size)检查index作为索引值对某个列表、字符串或数组是否有效。index>=0 && index<size 。IndexOutOfBoundsException
checkPositionIndex(int index, int size)检查index作为位置值对某个列表、字符串或数组是否有效。index>=0 && index<=size 。IndexOutOfBoundsException
checkPositionIndexes(int start, int end, int size)检查[start, end]表示的位置范围对某个列表、字符串或数组是否有效IndexOutOfBoundsException

3、例子

public User login(String userName,String password){
    if(StringUtils.isEmpty(userName) || StringUtils.isEmpty(password)){
        throw new RuntimeException("用户名或密码不能为空");
    }
    User user = userService.queryUserByUserNameAndPassword(userName,password);
    if(null == user){
        throw new RuntimeException("用户名或密码错误");
    }
    //…………………………………………省略业务逻辑…………………………………………
}
public User login(String userName,String password){
       Preconditions.checkArgument(!(StringUtils.isEmpty(userName) || StringUtils.isEmpty(password)),"用户名或密码不能为空");
       User user = userService.queryUserByUserNameAndPassword(userName,password);
       Preconditions.checkNotNull(user,"用户名或密码错误");
       //…………………………………………省略业务逻辑…………………………………………
}
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>21.0</version>
</dependency>

二 Assert

1.断言类

2.API:

常用:.assertNotNull()

(1).assertTrue/False([String message,]boolean condition);
用来查看变量是是否为false或true,如果assertFalse()查看的变量的值是false则测试成功,如果是true则失败,assertTrue()与之相反;

(2).fail([String message,]);直接用来抛出错误。

(3).assertEquals([String message,]Object expected,Object actual);
判断是否相等,可以指定输出错误信息。第一个参数是期望值,第二个参数是实际的值。这个方法对各个变量有多种实现

(4).assertNotNull/Null([String message,]Object obj);
判读一个对象是否非空(非空)。

(5).assertSame/NotSame([String message,]Object expected,Object actual);
判断两个对象是否指向同一个对象。看内存地址。

(6).failNotSame/failNotEquals(String message, Object expected, Object actual)
当不指向同一个内存地址或者不相等的时候,输出错误信息。

注意信息是必须的,而且这个输出是格式化过的。

参考文章:
1、https://blog.csdn.net/u012813201/article/details/81132275

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值