没几天,这一系列的文章已经写到6了。如果有些Java基础并且度过了前5篇的话,相信一定受益匪浅了。
这回要说的并不什么原则之类的问题了。而是粗略的讲一下在Java1.4中加入的一个新功能—断言。
断言使用关键字assert,在Java1.3时assert并不是关键字且可以为标识符,而在1.4之后是不能使用assert作为标识符的。
简单的说明一下assert的作用,假如要编写一个函数f,其中f只可以接受一个1-10的整形数据,如果数据大于10那么程序会错误。这段代码可能会是下面这个样子。
private void f(int data){
if(data>0 && data<=10){
// 某些处理工作
}else{
// 提示错误
}
}
如果说data是合法的1-10之间的整数,这个程序在调试的时候自然没有问题。如果data非法,也就是说data不是1-10中的整数,那么f这个方法是没有意义的,换句话说f这个方法只负责1-10之间的整数,他不负责其他的整数,而且他也只可能被传进1-10的整数。代码中的第2行的这个if字句是与功能无关的,这个验证只是为了读错(debug),如果调试完成,在最终发布的时候这些读错的代码应该确保删除以提高性能。这件事也会耗费大量的时间也有可能产生新的错误。而适当的使用断言就可以简化这个工作。
使用断言完成上述功能的
private void f(int data){
assert(data > 0 && data <= 10);
// 某些处理工作
}
断言是可以开启和关闭的,在开启断言之后,这段代码就会验证data是否"合法",如果不合法则会抛出AssertionError,从而停止程序的运行。而关闭断言之后,assert字句就像消失一样不会被执行也不会抛出任何东西。
语法解析: 断言有两种语法,非常简单和简单两种,其判断方式类似if、while。如果后面的逻辑表达式值为假,则抛出AssertionError。
非常简单 - 只提示假设不成立
assert (布尔表达式);
下列使用都是合法的:
assert true;
assert (x==1);
简单 - 提供更多的辅助信息
assert (布尔表达式) : 返回信息 ;
下列使用都是合法的:
assert false : "Data is Error";
assert (x>0 && x<=10) : new Object();
assert (x > y) : "x = "+x+" y = "+ y;
下列使用都是不合法的:
assert (x > y) : ;
assert false : String s = "error";
如何启动断言 在默认的状态下断言是被禁用的。在运行是需要使用命令行来启用断言。
启动 使用如下的参数运行
java -ea
java -enableassertions
禁用 使用如下的参数运行
java -da
java -disableassertions
注意抛出的AssertionError是可以被catch捕获的,但是并不推荐这样做,一旦捕获处理不当有可能会掩盖错误的发生。
关于如何合适的使用断言,Sun在断言文档里有一定的描述,下面简单说一下,具体的回头自己查一下就好了。
1. 不要使用断言验证公有方法的参数
2. 使用断言验证验证私有方法的参数
3. 不要使用断言验证命令行参数
4. 即使在公有方法内,可以使用断言检查从不会发生的情况
5. 不要使用可能产生副作用的断言表达式
分享到:
相关推荐
JAVA程序设计中的异常和断言是程序开发过程中的重要概念,它们帮助开发者处理程序运行时可能出现的问题,确保程序的稳定性和可靠性。 异常处理是JAVA语言中的一个关键特性,用于处理程序执行过程中出现的非正常情况...
《Java测试与设计——从单元测试到Web测试》这一主题深入探讨了软件开发中的关键环节:测试。在软件工程中,测试是确保软件质量、功能完整性和用户满意度的重要步骤。本文将围绕“单元测试”和“Web测试”两个核心...
Java断言是一种 debugging 机制,允许开发者在Java程序中添加检查点,以确保程序的正确性。断言可以在开发和测试阶段使用,以确保程序的正确性和可靠性。 Java断言的历史 Java断言是从 JDK 1.4 引入的,默认情况下...
在本项目中,你会遇到以下几个重要的Java编程知识点: 1. **面向对象编程(OOP)**:项目的核心是通过类来构建模型,如`User`、`Income`、`Savings`和`Expense`等。你需要定义这些类的属性(如金额、日期等)和方法...
JAVA断言技术详解,1、What will happen when you attempt to compile and run the following code? (Assume that the code is compiled and run with assertions enabled) 1. public class AssertTest 2. { 3. ...
在编程语言中,如JavaScript、Python或Java,对正则表达式的支持程度不同,有些可能不完全支持后行断言,尤其是当后行断言的模式长度不确定时。因此,在实际使用中需要注意所选语言的限制。 总结来说,先行断言和后...
### Java程序员面试题详解 #### 一、Java基础知识 1. **作用域public, private, protected, 以及不写时的区别** - **public**: 可以被任何类访问。 - **protected**: 可以被同一包内及不同包内的子类访问。 - ...
下面我们将详细探讨Java软件测试的相关知识点,并结合提供的两个压缩包文件名——Calculator.zip和MoreTriangle.zip进行分析。 1. **单元测试**:在Java开发中,单元测试是验证代码模块功能是否按预期运行的基本...
6. **Swing或JavaFX**:在图形用户界面(GUI)的开发中,Java提供了Swing或JavaFX库。实习生可能会构建简单的窗口应用,学习组件布局、事件处理等。 7. **数据库操作**:熟悉JDBC(Java Database Connectivity)API...
断言(Assertion)是Java中的一个功能,用于在开发阶段检查程序状态。在`AssertTest`中,使用`assert`语句来确保除数不为零。如果条件不满足,断言失败,程序会抛出`AssertionError`异常。在生产环境中,断言通常是...
本文将主要围绕Selenium在Java环境下的断言操作进行详细阐述,并结合其他相关知识点进行扩展。 断言在软件测试中扮演着至关重要的角色,它是验证预期结果与实际结果是否一致的关键步骤。在Selenium中,我们可以通过...
当我们谈论"truth,java单元测试的断言/命题框架"时,这里涉及到的是一个名为Truth的开源项目,它旨在提升Java单元测试中断言的清晰度和可读性。Truth不仅是一个强大的工具,也是一个优秀的实践,帮助开发者编写更加...
6. **取消选中复选框**:`page.uncheck(xpath)`,取消匹配XPath表达式元素的选中状态,通常用于复选框和单选框。 7. **输入参数**:`page.fill(input_field, text)`,在指定的输入框中填充文本,`page.clear(input_...
JUnit,作为Java编程语言的事实上的标准测试框架,其在软件开发中的重要性不容忽视。由著名程序员Kent Beck和Erich Gamma发起,JUnit以其简洁而强大的功能,极大地推动了Java开发中的自动化测试实践。Martin Fowler...
"java接口自动化测试框架及断言详解" 本篇文章主要介绍了Java接口自动化测试框架及断言详解,通过示例代码详细地...通过本篇文章,读者可以了解Java接口自动化测试框架及断言详解的知识点,并且可以应用于实际项目中。
在Java编程语言中,"断言"是一种强大的调试工具,它允许程序员在代码中插入条件检查,以确保程序在特定点的行为符合预期。这个概念在【标题】"Java中断言使用案例"中被强调,而【描述】进一步指出文档会探讨使用断言...
断言是一种编程实践,它允许开发者在代码中插入检查点,确保特定条件在特定时刻总是为真。这有助于在开发和测试阶段发现潜在的错误。然而,传统断言存在局限性,无法涵盖所有可能的检查情况,尤其是在多线程环境中。...
在JdkApi_regix.docx文档中,可能包含了更多关于Java正则表达式API的详细使用示例和深入解析,包括高级用法如反向引用、零宽度断言等。建议查阅文档以获取更全面的信息。 总结来说,Java正则表达式是强大的文本处理...
6. **运行测试**:使用IDE(如Eclipse、IntelliJ IDEA)内置的Junit支持,或者通过命令行运行Junit测试套件。 7. **查看测试结果**:测试失败时,Junit会显示失败的测试用例及具体的失败信息,帮助我们定位问题。 ...