Spec-Zone.ru › Kotlin 2

Тестируемость

Помимо тестирования вашей библиотеки, убедитесь, что код, использующий её, также можно тестировать.

Избегайте глобального состояния и функций верхнего уровня с состоянием

Ваша библиотека не должна полагаться на состояние в глобальных переменных или предоставлять функции верхнего уровня с состоянием в составе своего публичного API. Такие переменные и функции затрудняют тестирование кода, использующего библиотеку, поскольку для тестов необходимо находить способы управлять этими глобальными значениями.

Например, библиотека может определять глобально доступную функцию, предоставляющую доступ к текущему времени:

val instant: Instant = Clock.now()
println(instant)

Любой код, использующий этот API, будет трудно тестировать, поскольку вызов функции now() всегда будет возвращать реальное текущее время, тогда как в тестах часто желательно возвращать вместо него фиктивные значения.

Чтобы обеспечить возможность тестирования, библиотека kotlinx-datetime предоставляет API, позволяющий пользователям получить экземпляр Clock, а затем использовать его для получения текущего времени:

val clock: Clock = Clock.System
val instant: Instant = clock.now()
println(instant)

Это позволяет пользователям библиотеки внедрять экземпляр Clock в собственные классы и заменять реальную реализацию фиктивной во время тестирования.

Что дальше

Если вы ещё не сделали этого, ознакомьтесь со следующими страницами:

  • Узнайте о поддержании обратной совместимости на странице Обратная совместимость.

  • Подробный обзор эффективных практик документирования см. в разделе Информативная документация.

3 июня 2024 г.
Удобство отладкиРекомендации по обратной совместимости для авторов библиотек

© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/api-guidelines-testability.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API