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

猜你喜欢

转载自blog.csdn.net/yangyangrenren/article/details/115179740
今日推荐