首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将空安全和assertNotNull结合起来

将空安全和assertNotNull结合起来
EN

Stack Overflow用户
提问于 2017-02-04 19:32:46
回答 2查看 4.7K关注 0票数 15

在测试中,我们通常使用assertNotNull,但它不执行从可空类型到非空类型的智能转换。我必须写这样的东西:

代码语言:javascript
运行
AI代码解释
复制
if (test == null) {
    Assert.fail("")
    return
}

只使用assertNotNull调用执行智能强制转换是一种解决办法吗?你是怎么处理的?

EN

回答 2

Stack Overflow用户

发布于 2019-01-22 05:59:01

kotlin.test库提供了一个简单的解决方案:

kotlin.test.assertNotNull()

因为这个函数实现了Kotlin契约,所以它支持智能转换:

contract { returns() implies (actual != null) }

示例:

代码语言:javascript
运行
AI代码解释
复制
    fun Foo?.assertBar() {
        assertNotNull(this)
        assertEquals(this.bar, 0)
    }

只需确保使用正确的(import kotlin.test.assertNotNull)!导入assertNotNull

如果尚未使用kotlin.test库,请将其添加到项目中:

group: 'org.jetbrains.kotlin', name: 'kotlin-test', version: '1.3.11

票数 4
EN

Stack Overflow用户

发布于 2020-11-18 03:05:53

非常感谢@Rolf向我指出了科特林试验库在他的答案这里中提供的科特林试验方法。

我只想添加并指出,这个方法有一个非空返回类型(也就是说,它返回作为非空对象传递给它的可空对象)。因此,如果您在测试中强制展开属性,您可以从这一点出发,改进测试,如下所示:

代码语言:javascript
运行
AI代码解释
复制
val myProperty = assertNotNull(myObject?.myProperty)
assertEquals("Foo", myProperty.someOtherProperty)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42048266

复制
相关文章
【Kotlin】空安全 ② ( 手动空安全管理 | 空安全调用操作符 ? | let 函数结合空安全调用操作符使用 )
文章目录 一、手动空安全管理 二、空安全调用操作符 ? 三、let 函数结合空安全调用操作符使用 一、手动空安全管理 Kotlin 语言中 , 变量类型 分为 可空类型 和 非空类型 , 默认状态 下
韩曙亮
2023/03/30
6150
【Kotlin】空安全 ② ( 手动空安全管理 | 空安全调用操作符 ? | let 函数结合空安全调用操作符使用 )
【Kotlin】空安全 ③ ( 手动空安全管理 | 非空断言操作符 !! | 使用 if 语句判空 )
Kotlin 中的 可空类型 变量 , 在运行时 可以选择 不启用 安全调用 操作 ,
韩曙亮
2023/03/30
2K0
【Kotlin】空安全 ③ ( 手动空安全管理 | 非空断言操作符 !! | 使用 if 语句判空 )
浅谈Kotlin(八):空安全、空类型
这样要比传统写法 if(name==null) -1 else name.length 要简介
听着music睡
2022/01/04
9510
浅谈Kotlin(八):空安全、空类型
【Kotlin】空安全 ④ ( 手动空安全管理 | 空合并操作符 ?: | 空合并操作符与 let 函数结合使用 )
如果 表达式 A 的值 不为 null , 则 整个表达式的值 就是 表达式 A 的值 ;
韩曙亮
2023/03/30
8810
【Kotlin】空安全 ④ ( 手动空安全管理 | 空合并操作符 ?: | 空合并操作符与 let 函数结合使用 )
【Kotlin】空安全 ① ( Kotlin 的空安全机制 | 变量可空性 | 默认变量不可赋空值 | 声明可空类型变量 )
在 Java 语言 编写的程序中 , 出现最多的崩溃就是 NullPointerException 空指针异常 ,
韩曙亮
2023/03/30
2K0
【Kotlin】空安全 ① ( Kotlin 的空安全机制 | 变量可空性 | 默认变量不可赋空值 | 声明可空类型变量 )
空对象和空的对象
空对象:表面内部不包含任何属性和方法的对象,比如var obj={}就是一个空对象
十月梦想
2018/08/29
1.3K0
Dart空安全终极指南
Null Safety 的引入是 Dart 语言的一个重要里程碑。Null Safety 通过「在开发期间而不是在运行时捕获 null 错误来」帮助您避免一整类问题。
用户1974410
2022/09/20
1.2K0
Dart空安全终极指南
【Kotlin】空安全总结 ( 变量可空性 | 手动空安全管理 | 空安全调用操作符 | 非空断言操作符 | 空合并操作符 | 空指针异常处理 | 先决条件函数判空 )
在 Java 语言 编写的程序中 , 出现最多的崩溃就是 NullPointerException 空指针异常 ,
韩曙亮
2023/03/30
1.8K0
【Kotlin】空安全总结 ( 变量可空性 | 手动空安全管理 | 空安全调用操作符 | 非空断言操作符 | 空合并操作符 | 空指针异常处理 | 先决条件函数判空 )
flutter项目迁移空安全
6. 迁移 你的代码里大部分需要更改的代码,都是可以轻易推导的。例如,如果一个变量可以为空,它的类型需要 ? 后缀。一个不可以为空的命名参数,需要使用 required 标记。 针对迁移,你有两个选项
徐建国
2021/11/30
7980
flutter项目迁移空安全
Flutter 空安全的糖果罐
Fluter 2.0 已经发布了一段时间了,其中一项就是包含 Dart 2.12 的稳定版,完全支持空安全声明。作为一个进步的 Flutter 组织 , 组织的小伙伴也在第一时间支持了空安全。
前端小tips
2021/12/07
1.6K0
Flutter 空安全的糖果罐
深入理解Dart空安全
点击上方蓝字,发现更多精彩 导语 最近在迁移司内项目至空安全的过程中,深入研究了Dart的空安全特性。这项特性不仅能让开发者在编译阶段发现代码中存在的空指针异常,也能提升程序的运行效率。下面将从静态分析的角度讲一讲Dart如何对空安全特性进行支持、新旧版本之间的编码差异、如何迁移旧项目至空安全以及整个迁移原理做详细说明。 一、引入空安全 1.1 什么是空安全特性 Dart 语言在版本 2.12 中引入一项叫做空安全的新特性,在空安全版本下,运行时的NPE(NullPointer Exception)异常
腾讯VTeam技术团队
2021/08/17
4.5K1
Kotlin初级(2)- - - 空安全.md
如果可空变量为null时,返回null 这种用法大量用于链式操作,能有效避免空指针异常
Hankkin
2018/09/30
6820
《深入浅出Dart》空安全
近些年来,编程语言的类型安全性已经成为软件开发社区的一个主要焦点。通过利用类型安全,开发人员可以更好地预防错误,简化代码,并提高程序的整体性能和可靠性。Dart是一个被设计为安全、可扩展和高效的现代化编程语言,近期其发布了一项重要的更新:空安全。
linwu
2023/07/27
2600
【老孟Flutter】强大的空安全
空安全(Sound null safety)是 Dart 2.12 中新增的一项特性,空安全特性并不是 Dart 独有的,Kotlin, TypeScript, C#, Swift 等语言都有此特性,如果你了解这些语言的空安全特性及用法,那么下面关于 Dart 语言空安全特性的介绍你会感到非常熟悉,因为 Dart 语言空安全和其他语言基本一致。
老孟Flutter
2021/04/22
2.5K0
【老孟Flutter】强大的空安全
Level 3: SDN和NFV将引发安全危机
Level 3 承认SDN和NFV确实存在一些深层次的问题,可能会引发安全危机。Level 3致力于成为业内领先的安全产品供应商,为政府和企业用户提供安全产品,并标榜自己为向新IP技术过渡的前驱。因此
SDNLAB
2018/04/03
5460
Level 3: SDN和NFV将引发安全危机
空与非空 EMPTY_LOB和NULL的区别
编辑手记: EMPTY_LOB与NULL在字面意思上看起来差不多,但实际上,它们却有天壤之别。 前不久写过一篇文章,描述如果表包含了触发器,在通过IMP导入数据的时候,原本的EMPTY_LOB将被转化为NULL。有朋友在文章的回复中问,EMPTY_LOB和NULL的区别,这里就简单描述一下。 包含触发器的LOB表执行IMP导致EMPTY_LOB变为空: http://yangtingkun.itpub.net/post/468/495024 说实话,二者其实差别还是相当大的。 一个表示的未知,另一个表示的空
数据和云
2018/03/07
1.5K0
空与非空 EMPTY_LOB和NULL的区别
3. 类型声明与空安全(Void Safety)
上一篇文章介绍了 Koltin 的声明类型语法,但我有意避开了 Kotlin 类型系统里最重要的部分:空安全(Void Safety/Null Safety)。在 Kotlin 中,不可能为空的变量和可能为空的变量被强行分开了(Java 有 @Nullable 和 @NonNull 注释,但只会提供警告)。那 Kotlin 为什么要这样设计呢?我们来看一下今天的代码场景:(只想看使用办法的可以跳过这一节)
sickworm
2020/02/11
1K0
Git项目管理--将现有项目提交到空仓库
如果想把本地的一个项目进行托管,应该如何操作?如何将本地的项目和远程的仓库进行连接管理?
程序小工
2018/09/12
3.9K0
面试时最好把技术和业务结合起来说
前几天聊到了面试的情况,群里一个同学问怎么面试好。说是去一个朋友的儿子开的公司,我说这都有熟人了,就直接去呗。这同学还是让我帮出出主意,当时我也想不出来什么具体的东西,就只跟他说多看看面试题啊, 我建
web前端教室
2018/02/06
1.7K0
面试时最好把技术和业务结合起来说
让GBDT和GNN结合起来:Criteo AI Lab提出全新架构BGNN
选自OpenReview 作者:Sergei Ivanov等 机器之心编译 编辑:小舟、蛋酱 GBDT 和 GNN 方法各有各的优势,现在,来自法国、俄罗斯两家机构的研究者将二者的优势结合起来,探索
机器之心
2021/03/15
6630
让GBDT和GNN结合起来:Criteo AI Lab提出全新架构BGNN

相似问题

如何从JUnit获取eclipses空分析以使用assertNotNull

10

Spring安全将容器安全性和JWT令牌结合起来

11

JUnit:我应该在assertNotNull之后做空检查吗?

35

应使用AssertNull或AssertNotNull

42

AssertNotNull AssertionFailedError: expected:不是<null>

17
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文