我们正在将大部分单元测试从 Java 转换为 Kotlin。在我们的单元测试中声明变量的最佳方法是什么(但不是所有的可能仍然有使用 lateinit、lazy、可为空等的用例)以及原因。
2 回答
我相信 lateinit、lazy、nullable 和 non-nullable 在 Kotlin 的单元测试中也是很好的特性。
您可能知道 lateinit 仅适用于 var lateinit var
,这提供了以下功能:
- 您可以
lateinit var
从项目的任何部分进行初始化,因此这使您能够在测试用例中初始化变量 lateinit var
不适用于不可为空的值,因此您可以将空值分配给 lateinit 变量并检查其可空性作为测试用例。- 您可以经常更改值,
lateinit var
并且由于您正在更改值,它会增加您的测试用例,从而增加您的覆盖率。
在惰性时,它仅适用于 val,val ins by lazy{}
- 当您有一个单例(对象类)并且您的测试用例依赖于此实例时,这是一个很好的做法,因此您只需创建一次
by lazy
我推荐阅读这篇关于 kotlin 最佳实践的文章。
我希望这很好。
下面是用法:
安全调用(?.): 这有助于避免 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/