Test Time Source
Начиная с Kotlin: 1.9
class TestTimeSource : AbstractLongTimeSource
Источник времени с программно обновляемыми показаниями. Он удобен в качестве предсказуемого источника времени в тестах.
Текущее значение показаний можно увеличить на заданную длительность с помощью оператора plusAssign:
val timeSource = TestTimeSource()
timeSource += 10.seconds
Метки времени, возвращаемые этим источником времени, можно сравнивать по разнице с другими метками времени, полученными от того же источника времени.
Примечание по реализации: текущее значение показаний хранится как число типа Long в наносекундах, поэтому он способен представлять диапазон времени приблизительно ±292 года. Если значение показаний переполнится в результате операции plusAssign, будет выброшено исключение IllegalStateException.
Примеры
import kotlin.test.Test
import kotlin.time.Duration.Companion.seconds
import kotlin.time.*
fun main() {
//sampleStart
val testSource = TestTimeSource()
val elapsed = testSource.measureTime {
println("Pretending this function executes 10 seconds")
testSource += 10.seconds
}
println("Time elapsed: ${elapsed.inWholeMilliseconds} milliseconds ($elapsed)")
//sampleEnd
}
import kotlin.test.Test
import kotlin.time.Duration.Companion.seconds
import kotlin.time.*
fun main() {
//sampleStart
val testSource = TestTimeSource()
val result = testSource.measureTimedValue {
println("Pretending this function executes 10 seconds")
testSource += 10.seconds
42
}
println("Computed result: ${result.value}, time elapsed: ${result.duration}")
//sampleEnd
}
Конструкторы
constructor()
Свойства
Начиная с Kotlin: 1.9
protected val unit: DurationUnit
Единица измерения, в которой выражаются показания этого источника времени.
Функции
Начиная с Kotlin: 2.3
fun TimeSource.asClock(origin: Instant): Clock
Создаёт Clock, который использует метку времени в момент создания, чтобы определить, как далеко текущий момент отстоит от начала отсчёта.
Начиная с Kotlin: 1.9
open override fun markNow(): ComparableTimeMark
Отмечает момент времени в этом источнике времени.
Начиная с Kotlin: 1.9
inline fun TimeSource.measureTime(block: () -> Unit): Duration
Выполняет заданную функцию блок и возвращает длительность прошедшего интервала времени.
Начиная с Kotlin: 1.9
inline fun <T> TimeSource.measureTimedValue(block: () -> T): TimedValue<T>
Выполняет заданную функцию блок и возвращает экземпляр класса TimedValue, содержащий результат выполнения функции и длительность прошедшего интервала времени.
Начиная с Kotlin: 1.9
operator fun plusAssign(duration: Duration)
Увеличивает текущее значение показаний этого источника времени на заданную длительность.
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.time/-test-time-source/index.html