Kotlin Объявление переменной модульного теста lateinit vs lazy vs nullable vs not nullable - PullRequest
0 голосов
/ 01 апреля 2020

Мы конвертируем большинство наших модульных тестов из Java в Kotlin. Каков наилучший способ объявить переменную в наших модульных тестах (во всех, но не во всех случаях могут быть случаи использования lateinit, lazy, nullable et c ...) и почему.

Ответы [ 2 ]

1 голос
/ 01 апреля 2020

Ниже приведено использование:

Безопасные вызовы (?.): Это помогает избежать исключения NullPointerException. Он вызывает метод / свойство с помощью объекта, если этот объект не равен нулю, иначе возвращает ноль (не NPE). Это просто нулевая проверка.

The !! Оператор: Используется для явного подтверждения того, что свойство не равно нулю. Но если он равен null, то генерируется исключение NullPointerException

Lateinit: При использовании lateinit начальное значение назначать не нужно. Мы можем инициализировать это позже. Нам не нужно ничего инициализировать, пока нам это не понадобится.

Это просто краткое объяснение более подробной информации, которую я нашел ниже в блогах, полезной, пожалуйста, проверьте: https://medium.com/@agrawalsuneet / safe-Call-vs- NULL-Check-in- kotlin -f7c56623ab30 https://www.bignerdranch.com/blog/kotlin-when-to-use-lazy-or-lateinit/

1 голос
/ 01 апреля 2020

Я считаю, что lateinit, lazy, nullable и non-nullable являются хорошими функциями в Kotlin также в модульном тесте.

вы можете знать, что lateinit работает только с var lateinit var, это дает следующие функции:

  1. вы можете инициализировать lateinit var из любой части проекта, так что это дает вам возможность инициализировать переменную, возможно, в вашем тестовом примере
  2. lateinit var не работает со значениями, не допускающими значения NULL, поэтому вы можете присвоить нулевое значение переменной lateinit и проверить ее обнуляемость в качестве контрольного примера.
  3. в lateinit var вы можете часто менять значение, а так как вы меняете значения, это увеличивает ваши тестовые случаи, следовательно, ваш охват.

в то время как в ленивом, он работает только с val, val ins by lazy{}

  • Это хорошая практика, когда вы у вас есть singleton (класс объекта), и ваши тестовые примеры зависят от этого экземпляра, поэтому вы создаете его один раз by lazy

Я рекомендую прочитать эту статью о передовой практике в kotlin.

Надеюсь, это было хорошо. ?

...