`
luotuoass
  • 浏览: 635068 次
文章分类
社区版块
存档分类
最新评论

Java断言assert的使用方法

 
阅读更多
什么时候用assert.断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为 true.如果表达式计算为 false,那么系统会报告一个 AssertionError.它用于调试目的:
assert(a > 0); // throws an AssertionError if a <= 0断言可以有两种形式:
assert Expression1 ;
assert Expression1 : Expression2 ;
Expression1 应该总是产生一个布尔值。
Expression2 可以是得出一个值的任意表达式。这个值用于生成显示更多调试信息的 String 消息。

断言在默认情况下是禁用的。要在编译时启用断言,需要使用 source 1.4 标记:javac -source 1.4 Test.java要在运行时启用断言,可使用 -enableassertions 或者 -ea 标记。

要在运行时选择禁用断言,可使用 -da 或者 -disableassertions 标记。
要系统类中启用断言,可使用 -esa 或者 -dsa 标记。还可以在包的基础上启用或者禁用断言。

可以在预计正常情况下不会到达的任何位置上放置断言。断言可以用于验证传递给私有方法的参数。不过,断言不应该用于验证传递给公有方法的参数,因为不管是否启用了断言,公有方法都必须检查其参数。
不过,既可以在公有方法中,也可以在非公有方法中利用断言测试后置条件。另外,断言不应该以任何方式改变程序的状态。
分享到:
评论

相关推荐

    Java断言(assert)

    可以为Java复杂的测试提供简单的方法!可以加快开发进度

    Java陷阱之assert关键字

     在Java中,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默认是不启动断言检查的(这个时候,所有的断言语句都将忽略!),如果要开启断言...

    JAVA断言技术详解

    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. ...

    业务异常提示处理 springboot+Assert(自定义断言)

    使用springboot框架快速搭建,封装自定义断言做业务校验,公共异常处理打印日志, 更简单的业务判断处理

    java异常处理机制示例(java抛出异常、捕获、断言)

    主要介绍了java异常处理机制示例(java抛出异常、捕获、断言),需要的朋友可以参考下

    Java关键词assert的使用(基于IntelliJ IDEA)

    正确算法 private static int pythagorean(int x, int y) { return x * x + y * y; } 错误算法 private static int pythagorean(int x, int y) { return x * x + y * y +...assert想在IDE中使用,就必须开虚拟机选项

    junit-assert-collector:Java库扩展了JUnit的ErrorCollector类,提供了典型的JUnit样式声明方法

    junit-assert-collector 我编写的Java库是为了补充我在Savvis / CenturyLink最初开发的测试框架而开发的测试框架。 该库实质上扩展了JUnit库的org.junit.rules.ErrorCollector类,并且提供了大多数(如果不是全部)...

    JAVA面试题最全集

    被声明为final的方法也同样只能使用,不能重载 finally?再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。 ...

    JAVA--达内培训笔记

    enum 枚举 assert 断言 一个标识符尽量符合语义信息,提高程序可读性 类 名 :每个单词首字母大写, 变量和方法 :第一个单词小写,后边的每个单词首字母大写 包 名 :全部小写 常 量 :全部大写 11、局部...

    java 常用英语词汇大全

    java 常用英语词汇大全 部分内容如下: algorithm n.算法['.lg.riem] annotation [java]代码注释[.n.u'tei..n] anonymous adj....(反义:directly adv....assert (关键字) 断言[.'s.:t] ‘ (java 1.4 之后成为关键字

    visible-assertions:JUnit断言的替代方案,可为您的测试提供更深入的日志描述

    每个方法都带有一个附加参数,开发人员可以使用该参数来确切描述断言正在检查的内容。 关键区别在于,每个断言还伴随着彩色和格式化的日志输出,该日志输出以一种有趣且信息丰富的方式描述了测试的进度。 这有助...

    json-path-assert-2.1.0.zip

    JsonPath.zip,使用jsonpathjava jsonpath实现的json断言

    java 面试题 总结

    当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。 17、abstract class和interface有什么区别? 声明方法...

    java面试题

    当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步。在很多情况下采用异步往往更有效率。 数据库三大范式? 答:1:确保每列都是不可分割的原子值 2...

    proposal-import-assertions:关于使用断言导入ES模块的语法的建议

    语法如下(此处显示的是建议的导入JSON模块的方法): import json from "./foo.json" assert { type : " json " } ;import ( "foo.json" , { assert : { type : "json" } } ) ; JSON模块规范最初是该提案的一部分...

    java经典面试题汇总

    答:java中的保留字,现在没有在java中使用 11、数组有没有length()这个方法? String有没有length()这个方法 答:数组没有length()这个方法,有length的属性。String有有length()这个方法 12、Overload和Override的...

    整理后java开发全套达内学习笔记(含练习)

    assert (关键字) 断言 [ә'sә:t] ' (java 1.4 之后成为关键字) associate n.关联(同伴,伙伴) [ә'sәuʃieit] attribute n.属性(品质,特征) [ә'tribju:t] boolean (关键字) 逻辑的, 布尔型 call n.v.调用; 呼叫...

    assert-transformer

    您必须使用@AssertTransform批注来批注要转换的方法。 此注释在assert-transformer-tools项目中定义。 将使用输入文件夹的转换版本生成一个输出文件夹。 这些版本使用了在assert-transformer-tools中实现的几个类...

    超级有影响力霸气的Java面试题大全文档

    当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。 20、abstract class和interface有什么区别? ...

Global site tag (gtag.js) - Google Analytics