黑马程序员技术交流社区
标题:
有关于断言assert的选择题,不确定哪一个正确,求解
[打印本页]
作者:
蒋珍珍
时间:
2014-3-12 16:24
标题:
有关于断言assert的选择题,不确定哪一个正确,求解
本帖最后由 蒋珍珍 于 2014-3-17 09:12 编辑
assert(x=1):"x is "+x;
有关于这个assert的叙述哪一个正确?
A、若x等于1,则输出"x is 1"
B、程序编译错误
C、若x不等于1,则没有输出任何信息
这时关于断言的题目,在一个练习题里看到的,我感觉这里边没有正确答案,谁能帮我解答一下?
作者:
蒋珍珍
时间:
2014-3-15 10:17
没人回复啊,不过现在我已经明白了。给大家扩展一下哈:)
我在网上查了一下有关断言的知识,断言(assertion)是软件开发中常用的调试方式,它相当于Java中异常处理的一种高级形式。
语法格式有两种:
1、assert 表达式1;
2、assert 表达式1: 表达式2;
其中,表达式1的计算结果是一个boolean值,表达式2的计算结果是一个基本类型数据或是一个对象。
对于第一种语法格式,当程序运行到这一条断言语句时,表达式1的值将被计算,如果它的值为false,
该语句将抛出一个AssertionError对象,这是一个错误(Error)的子类,程序将终止;如果表达式的结果
的值为true,表示这个断言是正确的,程序可以继续往下执行。
对于第二种语法格式,如果表达式1的值为false,程序将表达式2的结果作为AssertionError构造器的
参数值创建一个AssertionError对象,并抛出该对象;如果表达式1的值为true,表达式2就不被计算,程序
继续往下执行。
运行时,要打开断言功能,javac -ea AssertTest。
所以选择题中的表达式1(x=1)不合法,应为(x==1)
我写了个程序测试了一下,
/*断言使用测试*/
public class AssertTest
{
public static void main(String[] args)
{
int[] arr=creatIntArray(1);
}
public static int[] creatIntArray(int x)
{
//assert(x=1):"x is "+x;//括号中的表达式应为布尔类型,所以编译失败
assert(x==1):"x is "+x;//x为1时,不输出任何信息,x不为1时,传入值是3时,输出java.lang.AssertionError: x is 3;
return new int[x];
}
}
复制代码
作者:
水蓝
时间:
2014-3-15 12:10
蒋珍珍 发表于 2014-3-15 10:17
没人回复啊,不过现在我已经明白了。给大家扩展一下哈
我在网上查了一下有关断言的知识,断言(assertion ...
学习了。谢谢楼主。
不过,感觉在以后工作中,直接在代码中调用断言的机会还是挺少的。
更多的时候,应该是在Junit中对程序某个模块进行单元测试的时候,使用的比较常见。
示例代码:
import junit.framework.Assert;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
public class ClassForJunit {
@BeforeClass
public static void OnInitClass() {
//类字节码被初始化的时候调用
//该方法应该是静态的
}
@Before
public void OnInitObject() {
//对象被初始化的时候调用
//也就是说,每个@Test修饰的方法执行之前,该方法,都会被执行一次
}
@Test
public void getNameTest() {
//这边算一个测试单元
Assert.assertEquals(1, 1);
}
@After
public void OnDestoryObject() {
//对象被释放的时候调用
//也就是说,每个@Test修饰的方法执行之后,该方法,都会被执行一次
}
@AfterClass
public static void OnDestoryClass() {
//程序结束 或者 类字节码被卸载的时候调用
//该方法应该是静态的
}
}
复制代码
作者:
蒋珍珍
时间:
2014-3-15 15:46
嗯,呵呵!互相分享,共同学习:):handshake
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2