Usa @ClassRule en Kotlin

En JUnit puedes usar @ClassRule para anotar un campo estático. ¿Cómo puedo hacer esto en Kotlin?

Lo intenté:

object companion { @ClassRule @JvmStatic val managedMongoDb = ... } and object companion { @ClassRule @JvmField val managedMongoDb = ... } 

pero ninguno de los últimos funciona porque la regla no se ejecuta.

Comprobé dos veces que exactamente la misma regla funciona bien sin context estático:

 @Rule @JvmField val managedMongoDb = ... 

No estás utilizando objects complementarios correctamente. Está declarando un object (instancia única de una class) llamado companion lugar de crear un companion object dentro de una class. Y, por lo tanto, los campos estáticos no se crean correctamente.

 class TestClass { companion object { ... } } 

Es muy diferente de:

 class TestClass { object companion { ... } // this is an object declaration, not a companion object } 

Aunque ambos son códigos válidos.

Este es un ejemplo de trabajo correcto del uso de @ClassRule , probado en 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...") } } 

Esto produce:

ClassRule antes
Pruebas…
ClassRule después

  • Acceso al valor externo dentro de aplicar
  • Android Studio Lint comtesting las funciones de order superior de Kotlin
  • Google Guava Invokedynamic requiere --min-sdk-version> = 26
  • "Tipo de propiedad no es un subtipo de val abstracto anulado" en el campo henetworkingado múltiple
  • Kotlin - IllegalArgumentException en método anulado
  • método de inicio de session no está llamando utilizando databinding en Android
  • FirebaseListAdapter ignora orderByChild () e equalTo ()
  • Geofence no funciona en Kotlin
  • ¿Se puede sobrepasar var con val con class henetworkingada en Kotlin?
  • Equivalente de Kotlin de String.getBytes () de Java
  • la anotación calificativa de kotlin se ignora