Ответ 1
Вы не используете сопутствующие объекты правильно. Вы объявляете объект (единственный экземпляр класса) под названием companion
вместо создания companion object
внутри класса. И поэтому статические поля создаются неправильно.
class TestClass {
companion object { ... }
}
Очень отличается от:
class TestClass {
object companion { ... } // this is an object declaration, not a companion object
}
Хотя оба кода являются действительными.
Вот правильный рабочий пример использования @ClassRule
, проверенный в Kotlin 1.0.0:
class TestWithRule {
companion object {
@ClassRule @JvmField
val resource: ExternalResource = object : ExternalResource() {
override fun before() {
println("ClassRule Before")
}
override fun after() {
println("ClassRule After")
}
}
}
@Test fun testSomething() {
println("Testing...")
}
}
Выводится:
ClassRule До
Тестирование...
ClassRule After