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

继翻译为什么输出是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. C#显示及隐藏任务栏

    private const int SW_HIDE = 0; //隐藏任务栏 private const int SW_RESTORE = 9;//显示任务栏 [DllImport("use ...

  2. cf886d Restoration of string

    明确几点 假设有串 ab,那么 a 后头必须是 b,b 前头必须是 a,否则就不是最频繁的了. 不可成环,aba是非法的. #include <iostream> #include < ...

  3. BRVAH(让RecyclerView变得更高效) (3)

    本文来自网易云社区 作者:吴思博 3 实现列表加载动画效果    3.1默认动画 我们只需将自建的 adapter 继承它对应满足需求的 Adapter,然后在 Activity 中实例化,通过ope ...

  4. Appium+python自动化-appium元素定位

    前言 appium定位app上的元素,可以通过id,name.class这些属性定位到 一.id定位 1.appium的id属性也就是通过UI Automator工具查看的resource-id属性

  5. Leetcode 334.递增的三元子序列

    递增的三元子序列 给定一个未排序的数组,判断这个数组中是否存在长度为 3 的递增子序列. 数学表达式如下: 如果存在这样的 i, j, k,  且满足 0 ≤ i < j < k ≤ n- ...

  6. BZOJ2244 [SDOI2011]拦截导弹 【cdq分治 + 树状数组】

    题目 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度.并且能够拦截任意速度的导弹,但是以后每一发炮弹都不能高于前一发的高度,其 ...

  7. 军训分批(codevs 2751)

    题目描述 Description 某学校即将开展军训.共有N个班级. 前M个优秀班级为了保持学习优势,必须和3位任课老师带的班级同一批. 问共有几批? 输入描述 Input Description N ...

  8. poj 2987 Firing

    Firing Time Limit: 5000MS   Memory Limit: 131072K Total Submissions: 10696   Accepted: 3226 Descript ...

  9. 云计算与 OpenStack

    “云计算” 算是近年来最热的词了.现在 IT 行业见面不说这三个字您都不好意思跟人家打招呼. 对于云计算,学术界有各种定义,大家有兴趣可以百度一下. CloudMan 这里主要想从技术的角度谈谈对云计 ...

  10. ftrace简介

    ftrace 的作用是帮助开发人员了解 Linux 内核的运行时行为,以便进行故障调试或性能分析. 最早 ftrace 是一个 function tracer,仅能够记录内核的函数调用流程.如今 ft ...