如何在Java中应用断言Assert

发表于:2021-7-19 10:06

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:高永强    来源:51CTO

#
Java
#
断言
  断言——assert
  断言语句assert在JDK1.4中首次提供,专门用来进行代码测试和纠错,以提高程序的可靠性。它可以被应用在程序中的任何位置,也被称为运行断点。编程人员在assert语句中提供测试数据的范围或者条件,作为断言或者声明(assertion)。例如,年龄必须大于18岁,提供的断言则是:
  age > 18   
  如果断言为真,即代码中变量age的值大于18,程序将正常运行;而断言为假时,这个断言异常将被JVM抛出,程序将停止运行,并且打印这个异常信息。
  断言语句是一种特殊语句,因为它在运行时可以被设置为开启或者关闭。断言关闭是许多IDE系统预设的状态,在运行时,JVM将忽略代码中所有断言语句,所以程序可以更加有效地运行。而需要执行断言时,可设置断言开启选项。在操作系统中利用Java指令运行程序时,必须输入开启断言选项。
  如下小节将讨论断言语句的编写、断言状态设置,以及它的应用。
  1、断言编写
  断言语句的语法格式如下:
  assert booleanExpression [: message];
  assert——Java关键字。
  booleanExpression——布尔代数表达式,为声明的断言。
  [:message]——可选项。需要打印的字符串异常信息。
  注意,断言语句以分号结束。
  为了代码可读性,布尔代数表达式一般用括号括起。下面讨论几个具体例子:
  例1.
  //完整程序存在本书配套资源目录Ch11中名为AssertTest.java
  int age = 17;
  assert (age > 18) : "Age must be greater than 18";
  这个例子中的断言语句声明变量age必须大于18,否则将抛出断言异常。这段代码运行后,程序将停止运行,并打印如下信息:
  Exception in thread "main" java.lang.AssertionError: Age must be greater than
  18.
  at AssertTest.main(AssertTest.java:11)
  如果age的值大于18,符合断言,程序将继续正常运行。
  例2.
  //完整程序存在本书配套资源目录Ch11中名为AssertTest.java
  double total = 219.98;
  assert (total > 0 .0 && total < 200.0) : "total: " + total + " – out of the
  range.";
  这段代码运行后,程序将停止运行,并将打印如下信息:
  Exception in thread "main" java.lang.AssertionError: total: 219.98 – out of
  the range.
  at AssertTest.main(AssertTest.java:10)
  然而,如果total的值在声明的断言范围之内,程序将继续正常运行。
  如果我们利用if语句模拟断言语句的执行功能,上面的例子可以编写如下:
  //完整程序存在本书配套资源目录Ch11中名为AssertTest.java
  double total = 219.98;
  if (total <= 0.0 || total >= 200.0) {  //超出合法值范围
      System.out.println("total: " + total + " – out of the range.");
      System.out.println("at AssertTest.main(AssertTest.java:10) ");
      System.exit(0);
  }
  这段代码运行后,程序将停止运行,并将打印如下信息:
  total: 219.98 – out of the range.
  at AssertTest.main(AssertTest.java:10)
  2、开启和关闭断言
  在编译时必须设置断言语句为开启状态,即设立编译选项-ea,断言语句才参与运行。ea即enable assertion,可分如下几种设置情况:
  1)在操作系统中利用java对已经编译的程序运行时,加入断言开启选项-ea。如:
  java——ea ClassName
  如果使用:
  java ClassName.
  再次对该程序运行时,断言语句将关闭,JVM将忽略程序中的所有断言语句。
  更多信息  也可以利用java –da ClassName关闭断言语句并运行这个程序。da即disable assertion。
  2)在Eclipse中设置断言语句状态。其步骤如下:
  Run菜单
  Run...
  Arguments
  在VM Arguments窗口中,输入:
  -ea,或者-enableassertions
  Apply
  Run
  如果需要关闭断言设置时,进入VM Arguments窗口,删除输入的设置即可。
  3)在TextPad中设置断言语句状态。其步骤如下:
  Configure菜单
  Preference
  Tools
  Run Java Application
  在Parameters的窗口条中的开始输入:
  -ea (注意,在-ea后必须留有一个空格)
  确定
  如果需要在TextPad中关闭断言设置时,在Parameters窗口条中删除输入的设置即可。

      本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号