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

继翻译为什么输出是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. 00036_private

    1.私有private 描述人.Person: 属性:年龄: 行为:说话:说出自己的年龄. class Person { int age; String name; public void show( ...

  2. Knockout v3.4.0 中文版教程-12-控制文本内容和外观-html绑定

    3. html绑定 目的 html绑定会使关联的DOM元素显示你参数指定的html内容. 当你的视图模型里面的值是HTML标记字符串,而你想要呈现它,这时候用html绑定特别合适. 例子 <di ...

  3. Windows 安装 composer

    在 composer.phar 同级目录下新建文件 composer.bat : C:\bin>echo @php "%~dp0composer.phar" %*>co ...

  4. zoj 2388 Beat the Spread!

    Beat the Spread! Time Limit: 2 Seconds      Memory Limit: 65536 KB Superbowl Sunday is nearly here. ...

  5. js的undefined怎么判断

    window.undefined=window.undefined 如何理解呢?百度搜索:window.undefined=window.undefined 博客说是为了兼容老浏览器. 技巧: 调试时 ...

  6. 九度oj 题目1262:Sequence Construction puzzles(I)_构造全递增序列

    题目描述: 给定一个整数序列,请问如何去掉最少的元素使得原序列变成一个全递增的序列. 输入: 输入的第一行包括一个整数N(1<=N<=10000). 接下来的一行是N个满足题目描述条件的整 ...

  7. 九度oj 题目1385:重建二叉树

    题目描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7 ...

  8. C\C++ 中的 strcat() 函数 —— 字符串的插入、拼接

    转载链接:http://blog.csdn.net/smf0504/article/details/52055971 函数原型 extern char *strcat(char *dest,char ...

  9. FreeMarker数据模板引擎全面教程mark

    http://blog.csdn.net/fhx007/article/details/7902040/#comments 以下内容全部是网上收集: FreeMarker的模板文件并不比HTML页面复 ...

  10. ElasticSearch聚合aggs入门

    Elasticsearch是一款功能强大的开源软件,不仅可以检索排序,还可以对文档进行更复杂的操作--聚合. 1.单值聚合 Sum求和,dsl参考如下: { "size": 0, ...