assertion的使用是一个复杂的问题,因为这将涉及到程序的风格,assertion运用的目标,程序的性质等问题。通常来说,assertion用于检查一些关键的值,并且这些值对整个程序,或者局部功能的完成有很大的影响,并且这种错误不容易恢复的。assertion表达式应该短小、易懂,如果需要评估复杂的表达式,应该使用函数计算。以下是一些使用assertion的情况的例子,这些方式可以让java程序的可靠性更高。
1. 检查控制流; 在if-then-else和swith-case语句中,我们可以在不应该发生的控制支流上加上assert false语句。如果这种情况发生了,assert能够检查出来。例如:x取值只能使1,2,3,我们的程序可以如下表示
- switch (x)
- {
- case 1: …;
- case 2: …;
- case 3: …;
- default: assert false : "x value is invalid: "+x;
- }
switch (x)
{
case 1: …;
case 2: …;
case 3: …;
default: assert false : "x value is invalid: "+x;
}
2. 在私有函数计算前,检查输入参数是否有效;对于一私有些函数,要求输入满足一些特定的条件,那么我们可以在函数开始处使用assert进行参数检查。对于公共函数,我们通常不使用assertion检查,因为一般来说,公共函数必须对无效的参数进行检查和处理。而私有函数往往是直接使用的。
例如:某函数可能要求输入的参数必须不为null。那么我们可以在函数的一开始加上
- assert parameter1 != null : "paramerter is null in test method";
assert parameter1 != null : "paramerter is null in test method";
3. 在函数计算后,检查函数结果是否有效;对于一些计算函数,函数运行完成后,某些值需要保证一定的性质,因此我们可以通过assert检查该值。例如,我们有一个计算绝对值的函数,那么我们就可以在函数的结果处,加上一个语句:
- assert value >= 0:"Value should be bigger than 0:"+value;
assert value >= 0:"Value should be bigger than 0:"+value;
通过这种方式,我们可以对函数计算完的结果进行检查。
4. 检查程序不变量;有些程序中,存在一些不变量,在程序的运行生命周期,这些不变量的值都是不变的。这些不变量可能是一个简单表达式,也可能是一个复杂的表达式。对于一些关键的不变量,我们可以通过assert进行检查。例如,在一个财会系统中,公司的支出和收入必须保持一定的平衡关系,因此我们可以编写一个表达式检查这种平衡关系,如下表示。
- private boolean isBalance() {
- ……
- }
private boolean isBalance() {
……
}
在这个系统中,在一些可能影响这种平衡关系的方法的前后,我们都可以加上assert验证:
- assert isBalance() : "balance is destoried";
[转]http://harry.iteye.com/blog/350998
分享到:
相关推荐
在Java中使用JUnit单元测试是软件开发过程中不可或缺的一部分。单元测试是指在开发过程中,对代码的一部分进行测试,以确保代码的正确性和可靠性。在Java中,JUnit是最流行的单元测试框架之一。 单元测试的重要性 ...
总的来说,使用JMeter测试Java请求是性能测试中常见且重要的任务,它能帮助开发者识别和优化Java服务的性能问题,确保在高负载下仍能提供稳定的服务。在实际操作中,可能还需要结合其他工具和方法,如日志分析、监控...
assertion-1.8.7.jar
在Java编程中,JUnit是一个广泛使用的开源测试框架,专为Java应用程序设计,它提供了丰富的API和工具,使得编写和执行单元测试变得简单、高效。本篇文章将深入探讨JUnit在Java单元测试中的应用和相关知识点。 首先...
3. Assertion.java:此文件可能包含有关断言(Assertions)的代码,这是Java中的一个调试工具。断言允许程序员在代码中插入检查,以确保程序的某些条件为真。通过`assert`关键字,我们可以测试假设并在条件不满足时...
这个示例代码是使用OpenSAML 2.2.3版本构建的,包含了一个简单的Java项目,项目中使用了Ant作为构建工具。Ant是一个Java项目自动化构建工具,通过配置文件build.xml来定义构建过程,如编译源码、打包和部署等任务。 ...
当你在linux中安装eclipse或者安装其他的包时遇到这样得问题:java: xcb_xlib.c:50: xcb_xlib_unlock: Assertion `c->xlib.lock' failed,可以按照下面步骤:第一:倒退回FC7的libx11. 卸载以下两个包的时候,可能有...
4. **throws** 关键字:在方法签名中使用,表示该方法可能会抛出一个或多个异常。例如,`TryCatchTest.run`方法声明抛出`IOException`,这意味着调用此方法的代码必须处理这个异常,或者再次将它抛出。 5. **...
断言(Assertion)是一种编程技巧,用于检查代码假设是否正确,通常在开发和测试阶段使用。 【泛型】 第8章的泛型是Java SE 5.0引入的新特性,它允许在定义类、接口和方法时指定类型参数,增强了类型安全性和代码...
在上述文档内容中,我们可以看到两个示例程序,它们展示了如何在Java代码中使用断言,并且涉及了在使用断言时的一些关键点。 第一个示例程序是`AssertExampleOne`类: ```java public class AssertExampleOne { ...
10. **goto关键字**:Java中虽然预留了goto关键字,但未实际使用,避免了复杂的控制流,鼓励使用结构化编程。 11. **length()方法**:数组没有length()方法,而是length属性;而String类具有length()方法,用于获取...
在这个Java SAML客户端的示例中,我们重点讨论如何使用`org.opensaml`库来实现SAML功能。 `org.opensaml`是Apache Shibboleth项目的一部分,它为开发人员提供了丰富的API,可以方便地处理SAML XML文档的创建、解析...
二、Java I/O流的使用 1. 文件操作:FileInputStream和FileOutputStream用于读写文件,而FileReader和FileWriter则处理字符文件。 2. 缓冲流:BufferedInputStream、BufferedOutputStream、BufferedReader和...
这些异常在程序设计阶段就应该考虑到,并且可以通过在方法声明中使用`throws`关键字来表明可能会抛出的异常,或者通过使用`try-catch`块来捕获和处理这些异常。例如,当尝试打开一个不存在的文件时,会抛出...
断言可以在代码中使用`assert`关键字来声明,后跟一个布尔表达式。如果该表达式的值为`false`,则触发断言错误,通常用于检测预设条件或程序不变量。 ### 7. String对象的创建与常量池 当使用`new String("xyz")`...