代码调试过程中easy遇到的问题
前两天身体有些不舒服,也没写啥新文章,昨天下了一天的雨。今天阳光明媚,空气也非常新奇。心情大好。
继翻译为什么输出是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遇到的问题的更多相关文章
- 关于火狐浏览器在开发调试过程中,出现javascript:void(0)的状态
关于火狐浏览器在开发调试过程中,出现javascript:void(0)的状态 由于火狐浏览器没有安装 Adobe Flash Player 19 NPAPI这个插件 安装好了之后就可以直接运行了
- 【lombok】使用lombok注解,在代码编写过程中可以调用到get/set方法,但是在编译的时候无法通过,提示找不到get/set方法
错误如题:使用lombok注解,在代码编写过程中可以调用到get/set方法,但是在编译的时候无法通过,提示找不到get/set方法 报错如下: 解决方法: 1.首先查看你的lombok插件是否下载安 ...
- Android APP 调试过程中遇到的问题。
调试过过程中APP安装完启动后有的时候会异常退出,报这个错误.有的时候可以直接启动.查找不到原因.网上说把commit方法替换成commitAllowingStateLoss() 也无效. Andro ...
- 调试过程中发现按f5无法走进jdk源码
debug 模式 ,在fis=new FileInputStream(file); 行打断点 调试过程中发现按f5无法走进jdk源码 package com.lzl.spring.test; impo ...
- VS·调试过程中某个操作导致调试突然退出之解决方案
阅文时长 | 0.11分钟 字数统计 | 232字符 主要内容 | 1.引言&背景 2.声明与参考资料 『VS·调试过程中某个操作导致调试突然退出之解决方案』 编写人 | SCscHero 编 ...
- C语言调试过程中duplicate symbol错误分析
说明:在我们调试C语言的过程中,经常会遇到duplicate symbol错误(在Mac平台下利用Xcode集成开发环境).如下图: 一.简单分析一下C语言程序的开发步骤. 由上图我们可以看出C语言由 ...
- 【转】MFC中调试过程中查看输出信息 -- 不错
原文网址:http://blog.sina.com.cn/s/blog_4e24d9c501014o39.html 笔记&&方便查阅. ~~~~~~~~~~~~~~~~~~~~~~~~ ...
- Android Studio 调试过程中快捷查看断点处变量值(Ctrl+Shift+I无效)?
当你在做Keymap到Eclipse后,在debug过程中,在Eclipse中我们很喜欢用Ctrl+Shift+I去查看一个运算或者调用的结果,这样用起来很方便.但是keymap到Eclipse后,你 ...
- [ISE调试] 在ISE调试过程中,遇到过的warning以及消除办法
1.在generate的过程中,在Map环节遇到了下面这个warning 意思:告诉你是黑盒子,而且他本来在设计里面就是黑盒子. 解决办法:点击图中的,会弹出一个代码文件,是声明这个IP核的文件,代码 ...
随机推荐
- C#显示及隐藏任务栏
private const int SW_HIDE = 0; //隐藏任务栏 private const int SW_RESTORE = 9;//显示任务栏 [DllImport("use ...
- cf886d Restoration of string
明确几点 假设有串 ab,那么 a 后头必须是 b,b 前头必须是 a,否则就不是最频繁的了. 不可成环,aba是非法的. #include <iostream> #include < ...
- BRVAH(让RecyclerView变得更高效) (3)
本文来自网易云社区 作者:吴思博 3 实现列表加载动画效果 3.1默认动画 我们只需将自建的 adapter 继承它对应满足需求的 Adapter,然后在 Activity 中实例化,通过ope ...
- Appium+python自动化-appium元素定位
前言 appium定位app上的元素,可以通过id,name.class这些属性定位到 一.id定位 1.appium的id属性也就是通过UI Automator工具查看的resource-id属性
- Leetcode 334.递增的三元子序列
递增的三元子序列 给定一个未排序的数组,判断这个数组中是否存在长度为 3 的递增子序列. 数学表达式如下: 如果存在这样的 i, j, k, 且满足 0 ≤ i < j < k ≤ n- ...
- BZOJ2244 [SDOI2011]拦截导弹 【cdq分治 + 树状数组】
题目 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度.并且能够拦截任意速度的导弹,但是以后每一发炮弹都不能高于前一发的高度,其 ...
- 军训分批(codevs 2751)
题目描述 Description 某学校即将开展军训.共有N个班级. 前M个优秀班级为了保持学习优势,必须和3位任课老师带的班级同一批. 问共有几批? 输入描述 Input Description N ...
- poj 2987 Firing
Firing Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 10696 Accepted: 3226 Descript ...
- 云计算与 OpenStack
“云计算” 算是近年来最热的词了.现在 IT 行业见面不说这三个字您都不好意思跟人家打招呼. 对于云计算,学术界有各种定义,大家有兴趣可以百度一下. CloudMan 这里主要想从技术的角度谈谈对云计 ...
- ftrace简介
ftrace 的作用是帮助开发人员了解 Linux 内核的运行时行为,以便进行故障调试或性能分析. 最早 ftrace 是一个 function tracer,仅能够记录内核的函数调用流程.如今 ft ...