本人只学过在JUNIT使用assert测试。
在复习OCJP考试中,遇到JAVA代码中直接使用assert。请各位给扫扫盲,我有如下几个问题:1. assert是一个类么?它如何构造对象呢?怎么没看到new出来? 查了查API没找到。
2. 如何在eclipse里,启用EA使之抛assertException?贴上简单的模拟代码,供高人点评public class Cloned {
public static void main(String[] args) {
System.out.println("classes");
assert(Integer.parseInt(args[0]) > 0);
}
}Eclipse;assert
在复习OCJP考试中,遇到JAVA代码中直接使用assert。请各位给扫扫盲,我有如下几个问题:1. assert是一个类么?它如何构造对象呢?怎么没看到new出来? 查了查API没找到。
2. 如何在eclipse里,启用EA使之抛assertException?贴上简单的模拟代码,供高人点评public class Cloned {
public static void main(String[] args) {
System.out.println("classes");
assert(Integer.parseInt(args[0]) > 0);
}
}Eclipse;assert
1) assert可以理解成关键字,通过assert false(可以返回boolean值的表达式),或者assert(false);能够抛出AssertError;
2) eclipse运行时,配置Run Configuration, 在(x)=Arguments下面,将args实参写到Program Arguments, 将 -ea写到VM arguments传给虚拟机,如下模拟代码,运行时,将产生AssertError;public class AssertTest extends AssertParent {
public static void main(String[] args) {
new AssertTest().go(args);
}
void go(String[] args){
if(args.length > 0) {
makeNoise(args);
}
}
}class AssertParent{
static void makeNoise(String[] args){assert(Integer.parseInt(args[0]) > 0);}
}输出为:
Exception in thread "main" java.lang.AssertionError
at com.ocjp.assertTest.AssertParent.makeNoise(AssertTest.java:19)
at com.ocjp.assertTest.AssertTest.go(AssertTest.java:10)
at com.ocjp.assertTest.AssertTest.main(AssertTest.java:5)