Я заменил старую io.kotlintest
новой зависимостью io.kotest
и импортировал ее во все тесты. Они проходят, когда запускаются индивидуально, но задача gradle gradlew test
зависает на задаче testDebugUnitTest
.
> Task :myAppModule:testDebugUnitTest
Gradle Test Executor 1 -> ~~~ Kotest Configuration ~~~
Gradle Test Executor 1 -> -> Parallelism: 1 thread(s)
Gradle Test Executor 1 -> -> Default test timeout: 600000ms
Gradle Test Executor 1 -> -> Default test order: TestCaseOrder
Gradle Test Executor 1 -> -> Default isolation mode: IsolationMode
Gradle Test Executor 1 -> -> Global soft assertations: False
Gradle Test Executor 1 -> -> Write spec failure file: False
Gradle Test Executor 1 -> -> Fail on ignored tests: False
Gradle Test Executor 1 -> -> Spec execution order: LexicographicSpecExecutionOrder
Gradle Test Executor 1 -> -> Extensions
Gradle Test Executor 1 -> - io.kotest.core.extensions.SystemPropertyTagExtension
Gradle Test Executor 1 -> - io.kotest.core.extensions.RuntimeTagExtension
Gradle Test Executor 1 ->
Если я запускаю задачу gradle test
в режиме отладки, код останавливается на классе MessageHub
в Gradle (v5.4.1) библиотека. Таким образом, это выглядит как проблема многопоточности (поскольку тест выполняется только в одном потоке).
Я создал объект ProjectSomfig cutsom:
package io.kotest.provided
import io.kotest.core.config.AbstractProjectConfig
object ProjectConfig : AbstractProjectConfig() {
private var started: Long = 0
override fun beforeAll() {
started = System.currentTimeMillis()
}
override fun afterAll() {
val time = System.currentTimeMillis() - started
println("overall time [ms]: $time")
}
override val parallelism: Int = 4
}
Но задача gradle по-прежнему выполняется с 1 потоком. Я добавил этот пакет в каталог модуля /src/test/kotlin/io/kotest/provided
.
PS Я не могу использовать или создать тег kotest
, потому что у меня нет 1500 репутации. : - (