前两天身体有些不舒服,也没写啥新文章,昨天下了一天的雨。今天阳光明媚,空气也非常新奇。心情大好。

继翻译为什么输出是String而不是Object,今天先写一下调试方面的东西。java中自带的函数调试是assert。也就是断言,是在java1.4引入的,以下回想一下什么是断言。

断言(Assertions)是在Java 1.4引入的,到如今仍然是Java语言最实用而且最重要的附加功能之中的一个。断言(Assertions)主要用于在程序中推断结果是否正确。

断言(Assertions)測试条件是否是true值(又叫布尔表达示),当条件为false时通知开发者。使用断言能够在代码的正确性上极大地提升你的信心。

实现断言:

断言是通过assert表达式和java.lang.AssertionError类来实现的。

这个表达式以keywordassert开头,后跟着一个布尔表达式。assert表达式语法上表演示样例如以下:

assertBooleanExpr;

假设BooleanExpr为true,什么事都不会发生,运行会继续。可是,假设表达式为false。AssertionError会初始化并被抛出。

例如以下清单1

/**
blog :www.marksaas.com
author :marksaas
*/
public class AssertDemo{
public static void main(String[] args){
int i=-1;
assert i>=0;
}
}

在Listing 1中的断言表明开发者希望变量x包括一个大于等于0的值。然而,这显然是不对的,这个断言表达式运行后会抛出AssertionError。

编译清单1(javac AssertDemo.java),开启断言并运行(java
-ea AssertDemo)。你应该能够看到以下的输出:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWFya193aw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

对于第二种样例,不带-ea(enable assertions)參数运行AssertDemo将会没有不论什么输出。当断言没有启用时,虽然它们仍然存在classfile中,但它们并不会被运行。

在Junit測试 中断言的方法:

public static void assertEquals(Object[] expected, Object[] actual)

public static void assertEquals(String message, Object[] expected, Object[] actual)

是JUnit 4 为比較数组加入的两个 assert() 方法.这两个方法以最直接的方式比較数组:假设数组长度同样。且每一个相应的元素同样,则两个数组相等。否则不相等。

数组为空的情况也作了考虑。 .

经常使用断言介绍:

1. assertEquals([String message],Object target,Object result)  target与result不相等,中断測试方法。输出message

assertEquals(a, b) 測试a是否等于b(a和b是原始类型数值(primitive value)或者必须为实现比較而具有equal方法)

assertEquals断言两个对象相等,若不满足。方法抛出带有对应信息的AssertionFailedError异常。

比如计算器加法功能的測试能够使用一下验证:

Assert.assertEquals(0,result);

2. assertTrue/False([String message],Boolean result) Result为 false/true。中断測试方法。输出message

assertTrue 断言条件为真,若不满足,方法抛出带有对应信息的AssertionFailedError异常。

assertFalse 断言条件为假,若不满足,方法抛出带有对应信息的AssertionFailedError异常。

assertFalse(a) 測试a是否为false(假),a是一个Boolean数值;

3. assertNotNull/Null([String message],Obejct result )  Restult == null/result!=null,中断測试方法,输出message

assertNull   断言对象为null,若不满足,方法抛出带有对应信息的AssertionFailedError异常。

assertNotNull 断言对象不为null,若不满足,方法抛出带有对应信息的AssertionFailedError异常。

assertNotNull(a) 測试a是否非空,a是一个对象或者null;

4.assertSame/NotSame(Object target,Object result) Traget与result 不指向/指向 同一内存地址(实例)。中断測试方法。输出message

assertSame 断言两个引用指向同一个对象。若不满足,方法抛出带有对应信息AssertionFailedError异常。

assertNotSame 断言两个引用指向不同对象,若不满足。方法抛出带有对应信息的AssertionFailedError异常。

assertNotSame(a, b) 測试a和b是否没有都引用同一个对象;

5. fail([String message])  中断測试方法,输出message

Fail  让測试失败,并给出指定信息。

欢迎关注我的微博  ,我的微博会实时更新文章。  交流群:

199326422

代码调试过程中easy遇到的问题的更多相关文章

  1. 关于火狐浏览器在开发调试过程中,出现javascript:void(0)的状态

    关于火狐浏览器在开发调试过程中,出现javascript:void(0)的状态 由于火狐浏览器没有安装 Adobe Flash Player 19 NPAPI这个插件 安装好了之后就可以直接运行了

  2. 【lombok】使用lombok注解,在代码编写过程中可以调用到get/set方法,但是在编译的时候无法通过,提示找不到get/set方法

    错误如题:使用lombok注解,在代码编写过程中可以调用到get/set方法,但是在编译的时候无法通过,提示找不到get/set方法 报错如下: 解决方法: 1.首先查看你的lombok插件是否下载安 ...

  3. Android APP 调试过程中遇到的问题。

    调试过过程中APP安装完启动后有的时候会异常退出,报这个错误.有的时候可以直接启动.查找不到原因.网上说把commit方法替换成commitAllowingStateLoss() 也无效. Andro ...

  4. 调试过程中发现按f5无法走进jdk源码

    debug 模式 ,在fis=new FileInputStream(file); 行打断点 调试过程中发现按f5无法走进jdk源码 package com.lzl.spring.test; impo ...

  5. VS·调试过程中某个操作导致调试突然退出之解决方案

    阅文时长 | 0.11分钟 字数统计 | 232字符 主要内容 | 1.引言&背景 2.声明与参考资料 『VS·调试过程中某个操作导致调试突然退出之解决方案』 编写人 | SCscHero 编 ...

  6. C语言调试过程中duplicate symbol错误分析

    说明:在我们调试C语言的过程中,经常会遇到duplicate symbol错误(在Mac平台下利用Xcode集成开发环境).如下图: 一.简单分析一下C语言程序的开发步骤. 由上图我们可以看出C语言由 ...

  7. 【转】MFC中调试过程中查看输出信息 -- 不错

    原文网址:http://blog.sina.com.cn/s/blog_4e24d9c501014o39.html 笔记&&方便查阅. ~~~~~~~~~~~~~~~~~~~~~~~~ ...

  8. Android Studio 调试过程中快捷查看断点处变量值(Ctrl+Shift+I无效)?

    当你在做Keymap到Eclipse后,在debug过程中,在Eclipse中我们很喜欢用Ctrl+Shift+I去查看一个运算或者调用的结果,这样用起来很方便.但是keymap到Eclipse后,你 ...

  9. [ISE调试] 在ISE调试过程中,遇到过的warning以及消除办法

    1.在generate的过程中,在Map环节遇到了下面这个warning 意思:告诉你是黑盒子,而且他本来在设计里面就是黑盒子. 解决办法:点击图中的,会弹出一个代码文件,是声明这个IP核的文件,代码 ...

随机推荐

  1. vuex相关知识点

    vuex简单理解转载博客 vuex从入门到入门------state:从 store 实例中读取状态最简单的方法就是在计算属性中返回某个状态------Getters:可以很容易地在任何组件中使用它- ...

  2. win10系统中virtualbox无法安装64位系统

    win10系统中virtualbox无法安装64位系统 先总结下如果想在虚拟机中安装64位的Linux系统,最好能满足这几个条件: 64位CPU 64位操作系统 64位的虚拟机软件 开启BIOS虚拟化 ...

  3. Masonry练习

    tableView的cell自动适应,scrollview自动适应,自定义自动布局控件 demo链接:http://pan.baidu.com/s/1jHsrGwQ

  4. Opencv学习笔记——视频进度条的随动

    1. CvCapture结构体: CvCapture是一个结构体,用来保存图像捕获的信息,就像一种数据类型(如int,char等)只是存放的内容不一样,在OpenCv中,它最大的作用就是处理视频时(程 ...

  5. 12.jsp概述及指令

    JSP全名是Java Server Page,它是建立在Servlet规范之上的动态网页开发技术.在JSP文件中,HTML代码与Java代码共同存在.Html代码用来实现网页中静态内容的显示,Java ...

  6. Linux(15):shell 编程

    shell基础 什么是 shell ? Shell是一个命令解释器,它的作用是解释执行用户输入的命令及程序等,用户输入一条命令, Shell 就解释执行一条. 这种从键盘一输入命令,就可以立即得到回应 ...

  7. ElasticSearch API 之 GET

    GET API是Elasticsearch中常用的操作,一般用于验证文档是否存在:或者执行CURD中的文档查询.与检索不同的是,GET查询是实时查询,可以实时查询到索引结果.而检索则是需要经过处理才能 ...

  8. SQL 随机取出一条数据

    今天遇到一需求,需要随机取出一条数据.网上找了下,sqlserver自带的有newID()这个函数,可以随机出来一个guid,用来取随机数还是蛮不错的. 直接上SQL: select top 1 *, ...

  9. [转发]Android 系统稳定性 - ANR(三)

    文章都为原创,转载请注明出处,未经允许而盗用者追究法律责任. 很久之前写的了,留着有点浪费,共享之. 编写者:李文栋 http://rayleeya.iteye.com/blog/1956056 1. ...

  10. linux的sar命令未找到

    linux的sar命令未找到 一般的命令可以直接使用yum安装,但是sar和mpstat命令这两个命令都是在sysstat包里, 网上的解决方法:rpm -ivh gd-2.0.32-23.2.i58 ...