Android业务开发中assert的使用

TREA框架:安卓开发的轻量级解决方案 在移动应用开发领域,轻量级框架正逐渐成为提升开发效率的关键工具。TREA(Technical Runtime Environment for Android)作为新兴的安卓开发框架,通过声明式UI编程和自动化构建流程重构了传统开发模式。其核心原理在于提供标准化API接口和预置功能模块,显著降低开发复杂度。从技术价值看,TREA特别适合中小型应用开发,能节省约40%的初始配置时间,这得益于其内置网络请求、本地存储等基础模块和可视化布局编辑器。实际应用场景中,开发者可以快速实现业务逻辑,同时享受热更新机制带来的 阅读详情

1. assert(boolean)

        官方解释是:Throws an AssertionError if the value is false and runtime assertions have been enabled on the JVM using the -ea JVM option.

        简单理解是:用来检测执行结果,当boolean为false时,抛出AssertionError,但是需要在开启对应的JVM选项(-ea)时才生效。

2. 使用assert的好处

        减少在编码的时候,做的很多ifelse检测判断,以及减少代码层级。比如:某个变量是否为null,某个成员属性是否为true等。

3. assert代码使用

    override fun convert(helper: BaseViewHolder, item: MultiItemEntity?) {
        assert(item is WrapperMultiItemEntity)
        val data = item as WrapperMultiItemEntity
        assert(data.data != null)

        when (helper.itemViewType) {
            MAP.value -> convertExperience(helper, data.data as RecommendInfo)
        }
    }

4. assert思考

        之前我们一般是在写单测时才使用到assert,那么在业务代码中使用它是否会产生副作用呢?下面看看反编译后代码:

4.1 Objects.requireNonNull 

Checks that the specified object reference is not null and throws a customized NullPointerException if it is. This method is designed primarily for doing parameter validation in methods and constructors with multiple parameters, as demonstrated below:
       public Foo(Bar bar, Baz baz) {
           this.bar = Objects.requireNonNull(bar, "bar must not be null");
           this.baz = Objects.requireNonNull(baz, "baz must not be null");
       }
       
Params:
    obj – the object reference to check for nullity message – detail message to be used in the event that a NullPointerException is thrown
Type parameters:    <T> – the type of the reference
Returns:    obj if not null
Throws:    NullPointerException – if obj is null

    public static <T> T requireNonNull(T obj, String message) {
        if (obj == null)
            throw new NullPointerException(message);
        return obj;
    }

4.2 release版本与debug版本的差异

        可以看到,断言为false时,debug版本会抛出AssertionError,且当数据异常时,会抛出new NullPointerException异常。

        而对于release版本,并未抛出AssertionError,也就是说并为对assert语句进行断言,当数据异常时,相应的使用Objects.requireNonNull代替new NullPointerException去抛出异常,所以如果数据存在异常,还是会抛出的。

        对于debug和release版本的代码不一致,应该是因为release打包时并未开启JVM的-es(ps:根据调试现象和反编译代码猜测如此,不一定准确)

 5.0 小结

        综上所述,业务代码中可以使用assert进行编码,以减少ifelse的判断和代码层级。

附:参考【用好 Require,check,assert,写好 Kotlin 代码 - 云+社区 - 腾讯云】

如有不对,敬请指出,谢谢。

Java断言(assert)的调试技巧与工程实践 断言(assert)是编程中常用的调试技术,通过在代码中设置条件检查点来验证程序状态。其工作原理是当指定条件为false时抛出AssertionError,帮助开发者快速定位逻辑错误。在Java开发中,断言特别适合验证方法的前置条件、不变式和后置条件,能显著提升调试效率。结合单元测试框架使用时,可以构建更健壮的代码验证体系。在Android和Java后端开发中,断言常用于数据库操作验证、状态一致性检查等场景。需要注意的是,断言默认在生产环境会被禁用,因此不能替代正常的参数校验和异常处理。合理使用断言可以使代 阅读详情

相关推荐

使用MockWebServer为安卓下载器构建健壮的集成测试体系

在软件开发中,集成测试是验证模块间交互与系统整体行为的关键环节,其核心原理在于模拟外部依赖以构建可控的测试环境。对于依赖网络请求的应用,如安卓下载器,直接测试真实HTTP交互面临效率低下、场景不可控等挑战。MockWebServer作为一款可编程的HTTP服务器,其技术价值在于能够精准模拟各种服务器响应(包括成功、错误及网络异常),从而高效验证客户端的**异常处理**逻辑与**稳定性保障**能力。通过它,开发者可以轻松模拟服务器返回404、500状态码或网络超时等场景,确保下载器在分块下载、断点续传等复杂流

weixin_30512043的博客 406

android中断言_android-assert是一个非常简单轻量的android断言库。类似于junit的Assert类。...

一、简介二、什么是断言,什么情况下应该使用androidAssert?三、在release版本中移除断言代码,只在debug中保留四、集成AndroidAssert库五、API一、简介android-assert是一个非常简单轻量的android断言库。类似于junit的Assert类。android-assert不是用来写测试用例的,可以直接在项目代码中使用他。在debug模式下,断言失败将会抛...

weixin_42347671的博客 1878

rbf神经网络python预测代码_RBF神经网络预测

%用RBF网络来预测股票走势clcclear%归一化数据input=[0 0 0 0 0 0.0277;0.0177 0.0292 0.0184 0.0122 0.0264 0.0492;0.0374 0.0946 0.0393 ...

weixin_39951419的博客 1889

assert文件夹 设置android_android assert 目录操作

预前知识: Android资源文件分类: Android资源文件大致可以分为两种: 第一种是res目录下存放的可编译的资源文件: 这种资源文件系统会在R.java里面自动生成该资源文件的ID,所以访问这种资源文件比较简单,通过R.XXX.ID即可; 第二种是assets目录下存放的原生资源文件: 因为系统在编译的时候不会编译assets下的资源文件,所以我们不能...

weixin_30841011的博客 1081

5g LDPC编译码-LDPC编码

本文摘要:LDPC编码是5G业务信道的核心编码技术,属于线性分组码。5G中LDPC编码分为两种基图类型(BG1和BG2),通过码块分割、CRC处理等步骤实现。编码过程主要涉及校验矩阵生成和校验位计算,其中校验矩阵采用稀疏矩阵结构。文中详细介绍了5G LDPC编码的具体实现流程,包括码块分割规则、校验位生成方法,以及两种基图(BG1和BG2)在矩阵结构和参数设置上的差异,重点阐述了通过模块化方法求解校验比特位的技术路径。

weixin_38270585的博客 1365

嵌入式系统启动流程解析:ROM Code、Bootloader与启动代码的协同工作

本文深入解析嵌入式系统从通电到运行的完整启动流程,详细阐述了ROM Code、Bootloader与启动代码三者如何像接力赛般协同工作。ROM Code作为芯片固化的初始引导程序,负责硬件自检并加载Bootloader;Bootloader作为系统总指挥,初始化关键硬件并加载操作系统内核;启动代码则为C语言运行环境铺平道路。理解这三者的分工与协作,是进行系统移植和解决启动问题的关键。

dd012的博客 554

【代码】Android|安卓11及以上版本asserts和外部文件存在性检查详解

主要是发现网上没有完整的、能跑的代码,不知道怎么回事,GPT给我重写的。我只能保证这个代码尊嘟能跑,不像其他的缺胳膊少腿的。

shandianchengzi的博客 1460

LSTM模型 轨迹经纬度预测

原始时间序列数据如下所示,我们只取前两列纬度和经度作为输入数据 我们设定用前六个位置信息预测下一个位置,则两个样本的输入输出数据如下所示: 创建LSTM网络训练模型: import numpy as np from keras.layers.core import Dense, Activation, Dropout from keras.layers import LS...

Muzi_Water的博客 2万+

Java陷阱之assert关键字

Java陷阱之assert关键字   一、概述   在C和C++语言中都有assert关键,表示断言。 在Java中,同样也有assert关键字,表示断言,用法和含义都差不多。   二、语法   在Java中,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默认是不启动断言检查的(这个时候...

weixin_34005042的博客 706

状态错误CS0234命名空间“Windows”中不存在类型或命名空间名“Management”(是否缺少程序集引用?)

解决源码编译UE打包失败问题

五百零一 2338

Flotherm XT学习历程

大家好,通过半年的热仿真软件学习使用,最终发现最好用,最好上手的软件就是Flotherm XT,对新手非常友好,但由于软件近几年才发布,网上教程非常少,后面我将在这里持续分析软件使用心得,和大家一起学习。

xiaoredred的博客 6264

Android单元测试学习总结(1)

Assert.assertEquals(simpleClass.getNameById(1), “小明”);Assert.assertEquals(simpleClass.getNameById(2), “小红”);其中setUp()是自动生成的添加了@Before注解,这会在每个测试方法执行前执行,因此在这里创建一个目标对象,也可以选择添加注解但这时setUp()应该改为静态的方法。然后在每个测试方法中编写测试用例,这里使用包中的断言方法,有很多assertXXX。

2401_87109598的博客 956

第一部分:VTK基础入门(第1章:VTK简介与概述)

VTK简介与核心特性概述 VTK(Visualization Toolkit)是一个开源的跨平台C++类库,专用于3D计算机图形学、图像处理和科学可视化。由Kitware公司开发,VTK自1993年起源以来,经历了开源化、成熟化和现代化多个发展阶段,现已成为科学可视化的核心工具之一。 VTK的核心特性包括: 管道架构:模块化设计实现数据流管理 丰富的数据支持:处理多边形数据、图像数据等 强大的渲染能力:集成OpenGL,支持多种渲染技术 最新版本VTK 9.4.2增强了现代C++支持,优化了内存管理,并提升

仰望星空的博客 2362

android 单元测试 assert,android单元测试AndroidTestCase

在实际开发中,开发android软件的过程需要不断的进行测试。而是用Junit测试框架,则是正规android开发的必用技术,在Junit中可以得到组件,可以模拟发送事件和检测程序处理的正确性。第一步:首先在AndroidManifest.xml中加入下面红色代码(把单元测试库引进到此项目中):android:icon="@drawable/ic_launcher"android:label="@...

weixin_42300956的博客 433

ABAP Cloud:面向云时代的 ABAP 开发范式与实践指南

摘要: 本文系统讲解SAP ABAP Cloud开发模型,涵盖其架构、工具链、规范及实践。ABAP Cloud作为统一开发模型,支持在SAP BTP和S/4HANA上构建云就绪应用,遵循clean core原则,通过RAP(RESTful应用编程模型)实现低耦合扩展。文章详细解析其核心构成(RAP、稳定API、clean core约束)、工具链(ADT、软件物流)及两种典型扩展场景(on-stack与side-by-side),并附可运行RAP示例代码(如销售笔记应用)。重点强调通过规范开发确保系统可升级性

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 409

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

解密Android 12日志分级机制:从VERBOSE到ASSERT的完整使用手册

本文深入解析Android 12的日志分级机制,从VERBOSE到ASSERT的六级体系,详细介绍了开发调试到生产部署的全周期管理策略。通过Log和Slog类的实战应用,帮助开发者优化日志输出,提升应用性能和诊断效率,特别适合Android开发者和移动应用工程师参考。

weixin_30952535的博客 500

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

android中断言_把断言(Assert)用的淋漓精致,提高代码的健壮性

目录一、什么是断言,什么情况下应该使用androidAssert?二、在release版本中移除断言代码,只在debug中保留三、集成AndroidAssert库总结一、什么是断言,什么情况下应该使用androidAssert?通常断言(assert)是在单元测试时,用来校验函数返回的结果。在自动化测试用来校验程序运行结果。但是我们接下来要讨论的并不是单元测试中使用断言,而是在项目业务代码中使用断...

weixin_36331312的博客 1327

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

把断言(Assert)发挥的淋漓精致,提高代码的健壮性

目录 一、什么是断言,什么情况下应该使用androidAssert? 二、在release版本中移除断言代码,只在debug中保留 三、集成AndroidAssert库 总结 一、什么是断言,什么情况下应该使用androidAssert? 通常断言(assert)是在单元测试时,用来校验函数返回的结果。在自动化测试用来校验程序运行结果。 但是我们接下来要讨论的并不是单元测试中使用断言,而是在项目业务代码中使用断言。 我们一起来看几个,大家非常熟悉的例子。这些情况下使用断言会让代码

IT互联网大叔的专栏 3705

Android-Next核心组件完全解析:高效Android开发的秘密武器

Android-Next是一套功能强大的Android公共组件库,专为提升开发效率和代码质量而设计。它提供了丰富的工具类、基础组件和实用功能,帮助开发者快速构建稳定可靠的Android应用,是高效Android开发的秘密武器。 ## 为什么选择Android-Next? 在Android开发过程中,开发者经常需要处理各种重复任务,如网络请求、数据处理、UI组件构建等。Android-Next通

gitblog_00995的博客 614

Xamarin.Android开发环境配置与核心实践指南

跨平台移动开发框架Xamarin允许开发者使用C#构建原生Android应用,显著提升代码复用率。其核心原理是通过Mono运行时将.NET代码转换为Android可执行格式,同时提供完整的原生API访问能力。在工程实践中,正确配置Android SDK和JDK环境是关键第一步,需特别注意SDK工具链的版本兼容性。通过Visual Studio深度集成,开发者可以高效管理依赖项、调试应用性能,并利用Xamarin.Forms实现UI代码共享。典型应用场景包括企业级跨平台应用开发、现有.NET技术栈迁移移动端等

weixin_33892359的博客 535

webView加载assert中的html

前几天项目中遇到了加载 很长文本的界面  在历经了 拼接字串, 拆分成多个Textview显示的痛苦后  采用了 HTML的方式来展示  但是还是有几点要注意  此博客就是来记录这次经历的.这个是从微软的隐私声明截取的部分  我们要做的网页就是这样的.首先创建项目 简单的设置加载的webview@Override protected void onCreate(Bundle savedInstan...

hierarchy_cui的博客 1580

Android Studio修改Log信息颜色

在Android中支持六种Log类型,分别为Verbose,Info,Debug,Warn,Error和Assert。 Verbose:英文含义是冗长的,啰嗦的。Verbose用来记录不重要的,一般的信息,通常不需要关注。 Info:中通常记录一些需要用户关注的消息,重要程度比Verbose高。 Warn:中则记录警告信息,这类信息通常表示应用执行过程中出现了一些问题,这些问题并不会导致整个应用...

听自己心跳的声音 804

Xamarin跨平台开发:Android原生应用实战指南

跨平台开发框架通过共享代码库显著提升移动应用开发效率,其中Xamarin采用独特的原生编译架构,将C#代码通过Mono运行时转换为平台特定机器码。这种技术原理使开发者既能使用.NET生态的强大功能,又能获得与Java/Kotlin开发相当的原生性能。在Android平台,Xamarin.Android通过JIT编译和完整的API绑定实现100%原生功能访问,特别适合需要深度集成设备特性的企业级应用开发。实际工程中,开发者需掌握Xamarin.Forms跨平台UI与Xamarin.Android原生控件的混合

weixin_33695082的博客 394

30分钟搞定精简版 Windows 11:tiny11builder 实操指南

tiny11builder 是开源 PowerShell 脚本,把 Windows 11 官方 ISO 精简成一张约 10GB 的可安装镜像:移除预装冗余、关闭遥测、绕过 TPM 等硬件门槛。老电脑装不了 Windows 11、硬盘空间紧张、虚拟机想省磁盘的,都适合用它。全程不写代码,30 分钟左右出片。 ## 决策锚点:它到底能帮你省掉什么 📊 | 指标 | 精简前 | 精简后 | 变化幅

gitblog_01042的博客 485

用好 Require,check,assert,写好 Kotlin 代码

在编码的时候,我们需要做很多的检测判断,比如某个变量是否为null,某个成员属性是否为true,执行某个操作结果是否成功。比如像下面的这段代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 var isDiskMounted = true fun createNewFile(file: File?): Boolean { re...

技术小黑屋 1617
上一篇: 《Kotlin核心编程》热身篇——Kotlin基础内容总结
下一篇: 20220601-单元测试浅谈
Swuagg
Swuagg 新星创作者: 移动开发技术领域 新星创作者: 移动开发技术领域 领域专家: 操作系统技术领域 领域专家: 操作系统技术领域
博客等级 码龄10年 2355粉丝 153原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值