`

断言 --assertion

阅读更多

断言是一种经典的调试与测试方式。 


断言其实就是在程序中的一条语句(assert),它对一个boolean表达式进行测试,一个正确程序必须保证该表达式的值为true,如果该值为false,则说明程序已处于不正确的状态,运行将被终止并退出——即 断言用于保证程序最基本、
关键的正确性。

 

环境

断言检查通常在开发和测试阶段开启。而在软件发布后 为提高 运行 性能,断言检查会被关闭。因此能够随时自由地选择开启或关闭断言检查显得非常重要,而这正是Java断言特性的重要功能之一。

 

开启的方式

默认状态下断言检查是关闭的,

 -eae nablea ssertions) 开启断言检查,

-da d isenableablea ssertions) 用于关闭断言检查

 

 

在Eclipse中启用断言的方法:

 

在Eclipse中启用断言的方法:

    方法1、Window-->Preferences-->Java-->Installed JREs
选择当前正在使用的JDK条目,点击 Edit... 按钮,进入JRE Definition界面: 在 Default VM Arguments 栏输入 -ea (或 -enableassertions) 参数。

    方法2、Run-->RunConfigurations,选择当前程序,并点击进入Arguments标签页,在VM arguments 栏输入 -ea(-enableassertions)参数。

 

以上两个方法,前者针对全局设置、后者仅 对当前运行的程序有效。

 

DEMO

 

package com.yan.test;

public class TestException {

	public static void main(String[] arg) {

		testMethod(new String[] { "yan", "xu", "dong" });

		testMethod("yan");

	}

	private static void testMethod(String temp) {
		for (int i = 0; i < 5; i++) {
			System.out.println(temp + i);

		}
	}

	private static void testMethod(String[] temp) {
		for (int i = 0; i < 5; i++) {
			assert temp.length == 5 : "数据长度不正常";
			System.out.println(temp[i]);

		}
	}

}

 

 

Result

 

Exception in thread "main" java.lang.AssertionError: 数据长度不正常
	at com.yan.test.TestException.testMethod(TestException.java:22)
	at com.yan.test.TestException.main(TestException.java:7)

 

 

 

 

 

分享到:
评论

相关推荐

    etlunit-log-assertion-3.1.2.zip

    【etlunit-log-assertion-3.1.2.zip】是一个包含ETL(Extract, Transform, Load)测试工具的压缩包,版本为3.1.2。ETL是数据处理流程中的关键部分,用于从各种数据源抽取数据,转换为适合目标系统格式,然后加载到...

    Go-测试框架断言-基础的断言Go库

    描述中提到的"Package assert is a Basic Assertion library used along side native go testing",暗示了这是一个用于配合Go标准库中的`testing`包进行测试的简单断言库。 在Go的标准测试库`testing`中,虽然已经...

    etlunit-assertion-3.0.6.zip

    "etlunit-assertion-3.0.6.zip"可能是一个用于测试和验证ETL(Extract, Transform, Load)过程的库,其中包含了断言机制,这在确保数据处理正确性方面起着关键作用。 一、Java I/O流基础 1. 流的概念:Java I/O流...

    snapshot-assertion:断言与存储在文件中的快照匹配的字符串

    在软件测试领域,断言(Assertion)是一种验证预期结果是否符合实际结果的重要工具。它用于检查程序中的某个条件是否满足,以确保代码的正确性。在JavaScript测试框架中,特别是那些用于前端自动化测试的框架,如...

    laravel-assertion-completions:Laravel自定义断言自动完成

    git clone https://github.com/builtbyeleven/laravel-assertion-completions.git ~ /Library/Application \ Support/Sublime \ Text \ 3/Packages/laravel-assertion-completions 屏幕截图 虫子 请提出或提出。

    SystemVerilog Assertion断言理论与实践.rar

    SystemVerilog Assertion断言理论与实践.rar SystemVerilog_Assertions_应用指南-源代码.rar uvm-1.2.rar VCS_labs.rar Verdi 基础教程.rar Verilog RTL 编码实践.rar [Cadence.IC设计.全资料教

    type-assertion:断言值的类型

    类型断言 声明值的类型。 安装 npm install type-assertion 用法 var assert = require ( 'type-assertion' ) assert ( { } , 'object' ) assert ( [ ] , 'object' ) //=&gt; TypeError: expected object assert ( 'ok...

    snapshot-assertion:断言与存储在文件中的快照匹配的字符串。 环境变量可用于保存而不是断言快照

    快照断言 断言与存储在文件中的快照匹配的字符串。 环境变量可用于保存而不是声明快照。 设置 要使用安装,请运行: npm install snapshot-assertion --save-dev 原料药 目录 功能快照 断言与存储在文件中的快照...

    json断言jmeter-plugins-json.rar

    1. **JSON Path Assertion**:基于JsonPath表达式进行断言,JsonPath类似于XPath,用于从JSON对象中提取数据。通过JsonPath表达式,你可以检查特定的JSON路径是否存在或者值是否符合预期。 2. **JSON Extractor**:...

    Assertion based design

    基于断言的设计(Assertion Based Design)是一种在集成电路(IC)设计中应用的技术,旨在通过断言来增强设计的验证和验证过程。本文将探讨基于断言的设计的基本概念、历史背景、实际应用以及它在新设计和现有设计中...

    SystemVerilog enhances assertion-based verification.pdf

    SystemVerilog语言提供了多种断言构造,例如立即断言、延迟断言和顺序断言。这些断言构造允许设计者以声明性方式捕捉复杂的时序行为,并且还能够涵盖系统设计中的并发和时序元素。与传统的硬件描述语言相比,...

    OWSM-custom-assertion-serviceexecutionreporter:此存储库包含自定义 OWSM 断言和策略(适用于 FMW 12c - 12.1.3)的源代码,可以附加这些源代码以将服务的每次执行报告给 JMS 目标

    OWSM-custom-assertion-serviceexecutionreporter 此存储库包含自定义 OWSM 断言和策略(适用于 FMW 12c - 12.1.3)的源代码,可以附加这些源代码以将服务的每次执行报告给 JMS 目标

    System Verilog Assertion 简介

    ### System Verilog Assertion (SVA) 简介 #### 一、SVA 在验证环境中的角色 在现代数字设计的验证过程中,测试平台扮演着关键的角色,它负责完成三大核心任务: 1. **产生激励**:即创建一系列输入信号以驱动...

    SV断言参考资料

    这本书详细介绍了断言技术,包括并发断言和立即断言的概念、构建块、简单序列、序列的边沿定义、逻辑关系、表达式、时序关系、时钟定义、禁止属性以及操作块和蕴含操作符的各种用法。这些内容对于希望深入理解和实践...

    线性状态机断言_systemverilog_assertion.zip

    对一个线性状态机的时序进行断言,使用的是Systemverilog语言,是初学SVA验证的入门。 线性状态机有IDEL,WAIT0,CNT1,,,CNT6,WAIT6,NEXT_BLK共16个state 资源说明:包含DUT代码,断言代码,断言说明pdf,以及...

    gateway-provider-identity-assertion-groupstolower

    网关提供商身份断言组降低 针对博客的伴随项目,有关在Apache Knox中添加简单的身份声明提供程序 克隆或分叉此项目,并使用以下命令构建它: mvn清洁包装 然后,您可以通过将生成的jar文件添加到{GATEWAY_HOME} / ...

    systemverilog assertion handbook

    SystemVerilog断言手册 SystemVerilog Assertions Handbook 是一本专注于SystemVerilog断言的书籍,主要涉及用于形式验证和动态验证的技术。这本书由VhdlCohen Publishing出版,作者对SystemVerilog断言在设计验证...

    OptimizeQ Add Assertion-crx插件

    【描述】中提到,"OptimizeQ Add Assertion-crx插件"具备定义断言的能力。在软件开发和测试领域,断言是一个重要的概念,它用于验证代码的预期行为。通过设置断言,我们可以确保程序在特定点的行为符合预期,这对于...

    SystemVerilog Assertion介绍及应用

    - 断言(assertion):断言操作符是SVA的核心,如$rose、$fell用于检测信号的上升沿和下降沿。 - 覆盖(coverage):coverproperty用于统计设计属性的覆盖情况。 ### 断言在实际设计中的应用 在设计验证过程中,SVA...

Global site tag (gtag.js) - Google Analytics