前两天身体有些不舒服,也没写啥新文章,昨天下了一天的雨。今天阳光明媚,空气也非常新奇。心情大好。
继翻译为什么输出是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 让測试失败,并给出指定信息。