首页 > 解决方案 > Kotlin 单元测试变量声明 lateinit vs lazy vs nullable vs non-nullable

问题描述

我们正在将大部分单元测试从 Java 转换为 Kotlin。在我们的单元测试中声明变量的最佳方法是什么(但不是所有的可能仍然有使用 lateinit、lazy、可为空等的用例)以及原因。

标签: javaandroidunit-testingkotlinkotlin-lateinit

解决方案


我相信 lateinit、lazy、nullable 和 non-nullable 在 Kotlin 的单元测试中也是很好的特性。

您可能知道 lateinit 仅适用于 var lateinit var,这提供了以下功能:

  1. 您可以lateinit var从项目的任何部分进行初始化,因此这使您能够在测试用例中初始化变量
  2. lateinit var不适用于不可为空的值,因此您可以将空值分配给 lateinit 变量并检查其可空性作为测试用例。
  3. 您可以经常更改值,lateinit var并且由于您正在更改值,它会增加您的测试用例,从而增加您的覆盖率。

在惰性时,它仅适用于 val,val ins by lazy{}

  • 当您有一个单例(对象类)并且您的测试用例依赖于此实例时,这是一个很好的做法,因此您只需创建一次by lazy

我推荐阅读这篇关于 kotlin 最佳实践的文章。

我希望这很好。


推荐阅读