代码调试过程中easy遇到的问题

时间:2022-04-26 00:48:31

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

继翻译为什么输出是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)。你应该能够看到以下的输出:

代码调试过程中easy遇到的问题

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