美文网首页
断言学习

断言学习

作者: kikey | 来源:发表于2016-10-11 11:53 被阅读0次

前言

    最近看项目代码,发现里面有大量的断言。已经看不懂了,偷偷百度学习一下。

 百度搜索 断言:断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真,可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新启用断言。


有点拗口,个人觉得 断言就是在程序员在程序运行前,预估某个变量的值。如果程序在运行时预估值与实际值不相等,则抛出异常提示。那么断言实际上主要是应用在程序调试上(虽然网上很多文章说 在生产上关闭断言是把孩子和洗澡水一起倒掉了)。

动手测试一下 增强记忆。

测试--未开启断言

代码:

public class AssertExample {

public static void main(String args[]) {

int x = 1;

System.out.println("Testing Assertion start");

assert (x == 2);

System.out.println("Testing Assertion passed!");

}

}

运行结果:

因为未开启断言,所以断言不起作用。

Testing Assertion start

Testing Assertion passed!

测试 启动断言

代码同上,运行时设置运行参数,以Eclipse为例

运行结果:

当数值与预估不一直时报出异常:

Exception in thread "main" java.lang.AssertionError 

at assertTest.AssertExample.main(AssertExample.java:7)

Testing Assertion start

测试 正确预测

代码:

public class AssertExample {

public static void main(String args[]) {

     int x = 1;

    System.out.println("Testing Assertion start");

    assert (x == 1);

    System.out.println("Testing Assertion passed!");

  }

}

运行结果:

Testing Assertion start

Testing Assertion passed!

测试  主动报出异常信息

代码:

public class AssertExample {

public static void main(String args[]) {

int x = 1;

System.out.println("Testing Assertion start");

assert x == 2 :"x is error";

System.out.println("Testing Assertion passed!");

}

}

运行结果:

Testing Assertion start

Exception in thread "main" java.lang.AssertionError: x is error

at assertTest.AssertExample.main(AssertExample.java:7)

后记

   1.断言尤其适合在一些循环的调试中,当循环值或者变量发送变化后,进行调试。

    2.代码中一些常用的字符合法性检查可以交由断言来实现

public static void assertObjectNotNull(String fieldName, Object fieldValue) {

/* if (fieldValue == null) {

throw new IllegalArgumentException(String.format("[%s]不能为空。", fieldName));

}*/

assert(null!=fieldValue):fieldName+"字段不能为空";

}

相关文章

  • 断言学习

    前言 最近看项目代码,发现里面有大量的断言。已经看不懂了,偷偷百度学习一下。 百度搜索 断言:断言表示为一些...

  • 2017.12.01学习总结

    今天学习了断言,断言是编程术语,表示为一些布尔表达式,可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言...

  • 学习笔记-断言

    1. 元素是否存在 2. 元素属性是否正确 3. 查找元素文本 4. hamcrest断言 Hamcrest是用于...

  • 2018-09-27 Eclipse如何启用assert断言

    学习selenium参考博客编写代码时,看到有assert断言,但是运行代码发现assert断言并没有效果。发现原...

  • 2017-12-01

    今天我们学习了断言编程,编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设。断言表示为一些布尔表...

  • python assert的作用

    使用assert断言是学习python一个非常好的习惯,pythonassert 断言句语格式及用法很简单。在没完...

  • 客观断言和主观断言 阅读抄300

    客观断言和主观断言 在说明“结论”之前,我们先来区分客观断言和主观断言。客观断言(objective claim)...

  • iOS断言的学习

    说在前面的话 什么叫断言?你会想到这个东西NSAsert.但是,不好意思.今天我所要说的不是这个.这个是系统的,即...

  • Pytest学习2 -断言

    一、前言 学习pytest总会习惯性的和unittest对比使用,自然就断言pytest和unittest也是有些...

  • TypeScript学习——类型断言

    类型断言 当我们使用联合类型的时候,只能访问这些类型的共有属性或方法。但在一些场景下,我们需要在不确定类型(指TS...

网友评论

      本文标题:断言学习

      本文链接:https://www.haomeiwen.com/subject/etfvyttx.html