1

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

4

2 回答 2

4

我相信 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 最佳实践的文章。

我希望这很好。

于 2020-04-01T11:10:05.313 回答
1

下面是用法:

安全调用(?.): 这有助于避免 NullPointerException。如果该对象不为空,它会在对象的帮助下调用方法/属性,否则返回空(非 NPE)。这只是一个空检查。

这 !!运算符: 这用于显式断言属性不为空。但如果它为 null 则抛出 NullPointerException

Lateinit: 使用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/

于 2020-04-01T11:19:52.113 回答