Kotlin 单元测试变量声明 lateinit vs lazy vs nullable vs non-nullable
Kotlin Unit Test variable declaration lateinit vs lazy vs nullable vs non-nullable
我们正在将大部分单元测试从 Java 转换为 Kotlin。在我们的单元测试中声明变量的最佳方式是什么(虽然不是所有一些可能仍然有使用 lateinit、lazy、nullable 等的用例...)以及为什么。
我相信 lateinit、lazy、nullable 和 non-nullable 是 Kotlin 中很好的特性,在单元测试中也是如此。
你可能知道
lateinit 仅与 var lateinit var
一起工作,这提供了以下功能:
- 您可以从项目的任何部分初始化
lateinit var
,所以
这使您能够在可能的范围内初始化变量
你的测试用例
lateinit var
不适用于不可为 null 的值,因此您可以将 null 值分配给 lateinit 变量并检查其可空性作为测试用例。
- 在
lateinit var
中,您可以经常更改该值,并且由于您正在更改值,它会增加您的测试用例,从而增加您的覆盖率。
在惰性模式下,它仅适用于 val,val ins by lazy{}
- 当你有一个单例(对象class)并且你的测试用例依赖于这个实例时,这是一个很好的做法,所以你创建它一次
by lazy
我建议阅读 this article 关于 kotlin 的最佳实践。
我希望这是好的。
下面是用法:
安全调用(?.):
这有助于避免 NullPointerException。如果对象不为空,它会在对象的帮助下调用 method/property,否则 returns 为空(非 NPE)。这只是一个空检查。
!!操作员:
这用于明确断言 属性 不为空。但是如果它是 null 那么它会抛出 NullPointerException
后期初始化:
使用lateinit,初始值不需要赋值。我们可以稍后对其进行初始化。我们不需要初始化任何东西,直到我们需要它。
这只是对更多细节的简短解释,我发现下面的博客很有用,请查看:
https://medium.com/@agrawalsuneet/safe-calls-vs-null-checks-in-kotlin-f7c56623ab30
https://www.bignerdranch.com/blog/kotlin-when-to-use-lazy-or-lateinit/
我们正在将大部分单元测试从 Java 转换为 Kotlin。在我们的单元测试中声明变量的最佳方式是什么(虽然不是所有一些可能仍然有使用 lateinit、lazy、nullable 等的用例...)以及为什么。
我相信 lateinit、lazy、nullable 和 non-nullable 是 Kotlin 中很好的特性,在单元测试中也是如此。
你可能知道
lateinit 仅与 var lateinit var
一起工作,这提供了以下功能:
- 您可以从项目的任何部分初始化
lateinit var
,所以 这使您能够在可能的范围内初始化变量 你的测试用例 lateinit var
不适用于不可为 null 的值,因此您可以将 null 值分配给 lateinit 变量并检查其可空性作为测试用例。- 在
lateinit var
中,您可以经常更改该值,并且由于您正在更改值,它会增加您的测试用例,从而增加您的覆盖率。
在惰性模式下,它仅适用于 val,val ins by lazy{}
- 当你有一个单例(对象class)并且你的测试用例依赖于这个实例时,这是一个很好的做法,所以你创建它一次
by lazy
我建议阅读 this article 关于 kotlin 的最佳实践。
我希望这是好的。
下面是用法:
安全调用(?.): 这有助于避免 NullPointerException。如果对象不为空,它会在对象的帮助下调用 method/property,否则 returns 为空(非 NPE)。这只是一个空检查。
!!操作员: 这用于明确断言 属性 不为空。但是如果它是 null 那么它会抛出 NullPointerException
后期初始化: 使用lateinit,初始值不需要赋值。我们可以稍后对其进行初始化。我们不需要初始化任何东西,直到我们需要它。
这只是对更多细节的简短解释,我发现下面的博客很有用,请查看: https://medium.com/@agrawalsuneet/safe-calls-vs-null-checks-in-kotlin-f7c56623ab30 https://www.bignerdranch.com/blog/kotlin-when-to-use-lazy-or-lateinit/