`
onlyor
  • 浏览: 382405 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Java Assert使用

    博客分类:
  • java
阅读更多

主要总结一下在eclipse中如何使用断言。

(一)首先明确:

   java断言Assert是jdk1.4引入的。

jvm 断言默认是关闭的。

断言是可以局部开启的,如:父类禁止断言,而子类开启断言,所以一般说“断言不具有继承性”。

   断言只适用于复杂的调试过程。

断言一般用于程序执行结果的判断,千万不要让断言处理业务流程。

二)判断eclipse是否开启了断言,代码如下:

public class AssertTest {

public static void main(String[] args) {
   boolean isOpen = false;  
   assert isOpen=true; //如果开启了断言,会将isOpen的值改为true
   System.out.println(isOpen);//打印是否开启了断言   
}

}

执行上面代码,如果打印 true说明已经启用了断言,如果为 false 则没有启用断言。

如果没有启用断言,则按按照下面方法开启断言。

(三)eclipse中开启断言

选择菜单:Run ---> Run... ---> 选择 Arguments 选项卡

VM arguments 文本框中输入: -ea    注意 中间没有空格,如果输入 -da 表示禁止断言。

然后关闭该窗口,提示保存,然后保存就开启了断言。如下图:


diyblPic

再次执行第二步操作,如果打印true,说明开启断言成功。

如果禁止断言,则按第二步操作中,删除 -ea 或者将 -ea 改为 -da 即可。

(四)断言使用

第 1 种使用方法:

public static void main(String[] args) {
   boolean isOk = 1>2;
   assert isOk;
   System.out.println("程序正常");
   
}

因为 1>2 显然是错误的,所以执行结果抛出异常:Exception in thread "main" java.lang.AssertionError

如果把 1>2 改为 1<2 则程序能顺利执行,打印 “程序正常”

第 2 种使用方法:

public static void main(String[] args) {
     boolean isOk = 1>2;
     try{
           assert isOk : "程序错误";
           System.out.println("程序正常");
        }catch(AssertionError err){
          System.out.println(err.getMessage());
     }
   
}

assert 后面跟个冒号表达式。如果冒号前为 true,则冒号后面的被忽略。

如果冒号前为false,则抛出AssertionError , 错误信息内容为冒号后面的内容,上面程序执行结果就是打印:"程序错误"

(五)有关断言的更多参数(转帖一下):

-ea java -ea 打开所有用户类的assertion
-da java -da 关闭所有用户类的assertion
-ea:<classname> java -ea:MyClass1 打开MyClass1的assertion
-da:<classname> java -da: MyClass1 关闭MyClass1的assertion
-ea:<packagename> java -ea:pkg1 打开pkg1包的assertion
-da:<packagename> java -da:pkg1 关闭pkg1包的assertion
-ea:... java -ea:... 打开缺省包(无名包)的assertion
-da:... java -da:... 关闭缺省包(无名包)的assertion
-ea:<packagename>... java -ea:pkg1... 打开pkg1包和其子包的assertion
-da:<packagename>... java -da:pkg1... 关闭pkg1包和其子包的assertion
-esa java -esa 打开系统类的assertion
-dsa java -dsa 关闭系统类的assertion
综合使用 java -dsa:MyClass1:pkg1 关闭MyClass1和pkg1包的assertion

分享到:
评论

相关推荐

    Assert.java

    适用于Java大部分非空判断,有效的减少空指针问题,直接调用Assert 里面的方法就行,非常方便,你值得拥有

    Java陷阱之assert关键字

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

    Java断言(assert)

    Java断言(assert) Java断言是一种 debugging 机制,允许开发者在Java程序中添加检查点,以确保程序的正确性。断言可以在开发和测试阶段使用,以确保程序的正确性和可靠性。 Java断言的历史 Java断言是从 JDK 1.4 ...

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

    2. **Assert(断言)**:在Java编程中,`assert`关键字用于在测试阶段检查代码假设是否正确,它是进行单元测试和调试的强大工具。在本项目中,通过扩展Spring Boot的断言功能,我们可以创建自定义的断言方法,以适应...

    Assert使用

    在标题“Assert使用”中,我们可以理解为这篇文档或博客将详细介绍如何在代码中有效地运用断言(Assert)。 `Assert` 通常在 C++、Java、C# 和 Python 等多种编程语言中被使用,它的主要功能是检查程序中的条件是否...

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

    例如,在`AssertTest`类的`div`方法中,如果除数为零,会使用`assert`关键字抛出一个异常,并附带自定义消息。 4. **throws** 关键字:在方法签名中使用,表示该方法可能会抛出一个或多个异常。例如,`TryCatchTest...

    Java陷阱之assert关键字详解

    标题中提到的“Java陷阱之assert关键字详解”所指的知识点主要涉及Java语言中assert关键字的介绍、使用、限制以及使用时需注意的潜在问题。Assert关键字作为Java SE 1.4版本引入的功能,其设计目的是为了帮助开发者...

    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中使用,就必须开虚拟机选项

    动态编译字符串成java,并且添加class到jvm

    使用`ToolProvider.getSystemJavaCompiler()`方法可以获取到当前JVM中的Java编译器实例。 2. **构建诊断监听器**: 编译过程中可能产生错误或警告,我们需要一个`DiagnosticListener`来接收这些信息。你可以实现`...

    Java中断言使用案例

    这个概念在【标题】"Java中断言使用案例"中被强调,而【描述】进一步指出文档会探讨使用断言的优势及其用法。下面将详细阐述Java中断言的原理、好处以及如何使用。 1. **什么是Java断言**: Java断言是一种机制,...

    java、android解压缩Assert文件夹下的压缩文件

    通过调用UnzipUtils下面的UnzipUtils.createFile&#40;locationZip&#41;;UnzipUtils.copyBigDataToSD(MainActivity.this, locationZip, ZIP_NAME);UnzipUtils.upZipFile&#40;new File(locationZip&#41;...

    eclipse如何开启断言assert

    8. 使用断言:在你的Java代码中,你可以使用`assert`关键字来插入断言检查。例如: ```java assert condition : "错误信息"; ``` 这里,`condition`是你希望为真的条件,如果条件为假,程序将抛出`...

    android用webview加载assert中的html并且可拨打页面中的电话

    这篇教程将详细介绍如何在Android应用中使用Webview加载assert目录下的HTML文件,并且使用户能够通过Webview拨打电话。 首先,我们需要了解`WebView`。`WebView`是Android SDK提供的一种控件,用于在应用程序内嵌入...

    单元测试之道Java版使用JUnit

    在Java编程中,JUnit是一个广泛使用的开源测试框架,专为Java应用程序设计,它提供了丰富的API和工具,使得编写和执行单元测试变得简单、高效。本篇文章将深入探讨JUnit在Java单元测试中的应用和相关知识点。 首先...

    【Java设计模式-源码】Arrange/Act/Assert模式:增强测试的清晰度和简洁性

    Arrange/Act/Assert 模式在 Java 单元测试中至关重要。这种测试方法通过将单元测试明确地分为三个不同的部分:设置(Arrange)、执行(Act)和验证(Assert),来结构化单元测试。 四、Arrange/Act/Assert 模式的...

    A Java architecture test library, to specify and assert ar.zip

    这个名为"A Java architecture test library, to specify and assert ar.zip"的压缩包,包含的是ArchUnit的主要源码和资源文件,其核心部分是`ArchUnit-main`。 ArchUnit库的特性与用法: 1. **定义规则**:...

    json-path-assert-2.1.0.zip

    `json-path-assert-2.1.0.zip` 文件包含了 `JsonPath` 库的一个版本,这是一个用于 Java 开发的开源项目,用于执行 JSON 数据的断言。 `JsonPath` 库是基于 Jayway JsonPath 实现的,这是一个由 Java 编写的库,它...

    Android读取Assert资源目录下数据库,数据库操作

    在Java代码中,首先需要获取到`AssetManager`对象,它是访问`assets`目录的入口。这通常在Activity或Application的初始化阶段完成: ```java AssetManager assetManager = getAssets(); ``` 2. **复制数据库...

    Java-8-jar包

    7. **多重断言**:在JUnit测试中,Java 8允许在单个assert语句中执行多个断言,提高了测试代码的可读性和效率。 8. **类型推断增强**:Java编译器现在能更好地推断泛型的类型,使得代码更简洁,如在使用钻石操作符...

Global site tag (gtag.js) - Google Analytics