【业务功能篇29】Assert断言

本文介绍了在Java编程中,如何使用Assert类进行单元测试中的断言操作,如notNull、hasText、isTrue等方法,以及它们在不同条件下的异常处理。通过示例代码展示了断言在验证对象是否为空、表达式是否为真等情况的应用。
摘要由CSDN通过智能技术生成

业务场景: 当我们需要对一个接口方法验证是,在单元测试中,主要用于程序代码的调试或测试阶段

基本的使用就是assert condition,当 condition 为 true,就继续往下运行;当 condition 为 false,就抛出一个错误,程序停止。

  •  注意断言抛出的是错误,我们是无法使用 try{}catch(){}捕捉的。
  • 限定某段代码中某个变量的合理范围,一旦不符合就抛出错误,需要让程序员再修改代码。表达式结果等同理。

简单记录下 今天用到的这个断言,主要是判断了一个对象是否为空,业务逻辑上是需要这个对象值不能为空的,单元测试简单做了下验证

 

 

断言常用的方法 

  • notNull(Object object) 当 object 不为 null 时抛出异常,notNull(Object object, String message) 方法允许您通过 message 定制异常信息。和 notNull() 方法断言规则相反的方法是 isNull(Object object)/isNull(Object object, String message),它要求入参一定是 null;
  •  isTrue(boolean expression) / isTrue(boolean expression, String message) 当 expression 不为 true 抛出异常;
  • notEmpty(Collection collection) / notEmpty(Collection collection, String message) 当集合未包含元素时抛出异常。notEmpty(Map map) / notEmpty(Map map, String message) 和 notEmpty(Object[] array, String message) / notEmpty(Object[] array, String message) 分别对 Map 和 Object[] 类型的入参进行判断;
  • hasLength(String text) / hasLength(String text, String message)  当 text 为 null 或长度为 0 时抛出异常;
  •  hasText(String text) / hasText(String text, String message)  text 不能为 null 且必须至少包含一个非空格的字符,否则抛出异常;
  • isInstanceOf(Class clazz, Object obj) / isInstanceOf(Class type, Object obj, String message)  如果 obj 不能被正确造型为 clazz 指定的类将抛出异常;
  • isAssignable(Class superType, Class subType) / isAssignable(Class superType, Class subType, String message)  subType 必须可以按类型匹配于 superType,否则将抛出异常;
     
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.Assert;
 
 
public class Test {
    private final static Logger logger = LoggerFactory.getLogger(Test.class);
 
    public static void main(String[] args) {
        Test test = new Test();
        test.f1();
    }
 
    public void f1() {
        try {
//            String s1 = null;//hasText,notNull,hasLength均报异常
//            String s1 = "";//hasText报异常,notNull不报异常,hasLength报异常
//            String s1 = " ";//一个空格,hasText报异常,notNull不报异常,hasLength不报异常
//            String s1 = "   ";//三个空格,hasText报异常,notNull不报异常,hasLength不报异常
            String s1 = "s";//hasText,notNull,hasLength均不报异常
            Assert.hasText(s1, "hasText,s1不能为空,当前为空已抛出异常");
            Assert.notNull(s1, "notNull,s1不能为空,当前为空已抛出异常");
            Assert.hasLength(s1, "hasLength,s1不能为空,当前为空已抛出异常");
 
            Assert.isTrue(1 < 2, "1<2需要为true");//不报异常
            Assert.isTrue(1 > 2, "1<2需要为true");//报异常
 
            Assert.isInstanceOf(String.class,s1);//不报异常
            Assert.isInstanceOf(Object.class,s1);//不报异常
            Assert.isInstanceOf(Integer.class,s1);//报异常
 
            Assert.isAssignable(String.class,s1.getClass(),"s1需要是String类型的子类");//不报异常
            Assert.isAssignable(String.class,new Integer(1).getClass(),"s1需要是String类型的子类");//报异常
            Assert.isAssignable(Object.class,s1.getClass(),"s1需要是Object类型的子类");//不报异常
            Assert.isAssignable(String.class,new Object().getClass(),"subType需要是superType的子类");//报异常
        } catch (Exception e) {
            logger.error(e.getMessage());
        }
        logger.info("运行正常");
    }
}
 
//Assert.notNull:只有输入空,才会报异常;输入空字符比如""、空格不报异常;
//Assert.hasLength:如果输入空、空字符报异常;输入空格不报异常;
//Assert.hasText:只有输入空、空字符比如""、空格或多个空格都会报异常;(不把空格算作内容)
//校验的越来越严格

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值