Avatar ·

Fehler @Rule in Kotlin: So beheben Sie „The @Rule must be public“ in Android-Tests

Hallo zusammen! Ich habe gerade mit dem Testen auf Android mit Espresso und Kotlin begonnen. Ich habe eine einfache Testklasse für eine Activity und versuche, `ActivityTestRule` zu verwenden. Der Code sieht so aus: ```kotlin @RunWith(AndroidJUnit4::class) class MainActivityTest { @Rule val activityRule = ActivityTestRule(MainActivity::class.java) @Test fun testButtonClick() { onView(withId(R.id.my_button)).perform(click()) } } ``` Aber wenn ich den Test ausführe, erhalte ich einen Fehler: ``` java.lang.Exception: The @Rule must be public ``` Ich habe gegoogelt, es wird geschrieben, dass man in Java das Feld `public` machen muss, aber in Kotlin habe ich `val` deklariert – ist das nicht ein öffentliches Feld? Ich habe versucht, `@JvmField` hinzuzufügen, aber es funktioniert immer noch nicht. Können Sie mir sagen, wie ich `ActivityTestRule` in Kotlin korrekt deklariere, damit der Test läuft? Ich verwende die neuesten Bibliotheksversionen: espresso-core 3.5.1, test runner 1.5.0. Ich wäre für eine ausführliche Erklärung dankbar. <<>>

Warum tritt der Fehler auf?