zoukankan      html  css  js  c++  java
  • 代码调试过程中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)。你应该能够看到以下的输出:


    对于第二种样例,不带-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

  • 相关阅读:
    GDOI2017 之后
    [codevs1378]选课
    图的连通_Tarjan
    [bzoj1270 BJWC2008]雷涛的小猫
    [51mod 1201]整数划分 dp
    这只是一个非常水的人,写下的非常水的文字,不看也罢
    Python基础中所出现的异常报错总结
    Python简单爬虫入门二
    Python写地铁的到站的原理简易版
    HTML基本组成结构与标签的认识
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/6856165.html
Copyright © 2011-2022 走看看