[JAVA] Die @ Rule'mActivityRule 'muss öffentlich sein. Wenn Sie den Espresso-Test in Kotlin konvertieren, tritt ein Fehler auf.

Was du machen willst

Kotlinisierung des Espresso-Tests

Konvertiert Java-Datei in Kotlin-Datei konvertieren

Ärger

Wenn ich den Test durchführe, erhalte ich die folgende Ausnahme

org.junit.internal.runners.rules.ValidationError: The @Rule 'mActivityRule' must be public.

Ursache

Dies liegt daran, dass die in Kotlin deklarierten Eigenschaften von Java-Seite aus nur Getter und Setter enthalten und nicht als öffentliche Felder zugänglich sind.

Lösungen

Wenn Sie von Java aus auf die Felder der in Kotlin geschriebenen Klasse zugreifen möchten, fügen Sie die Annotation @JvmField wie folgt hinzu.

@Rule @JvmField
var mActivityRule = ActivityTestRule(HogeActivity::class.java)

Am Ende

Dies geschieht, weil ich die Sprachspezifikationen von Kotlin nicht kenne und daher die Grundlagen lernen muss. Ich hoffe es wird für Sie hilfreich sein.

Hilfreiche Seite

https://kotlinlang.org/docs/reference/java-to-kotlin-interop.html https://proandroiddev.com/fix-kotlin-and-new-activitytestrule-the-rule-must-be-public-f0c5c583a865

Recommended Posts

Die @ Rule'mActivityRule 'muss öffentlich sein. Wenn Sie den Espresso-Test in Kotlin konvertieren, tritt ein Fehler auf.
Validiert als "bis zu 6 alphanumerische Zeichen", "können nur Zeichen voller Breite verwendet werden" und "ein Fehler tritt auf, wenn er leer ist".
Was tun, wenn während des Rails-Testcodes ein Fehler bei der Standardauthentifizierung auftritt?
Was tun, wenn die Meldung "Ein Server läuft bereits" angezeigt wird. Fehler beim Versuch, den Rails-Server zu starten
Wenn Sie die Testabdeckung privater Methoden in JUnit erfüllen möchten
Wenn Sie mit Ajax null auf Servlet werfen, wird es in leer "" konvertiert.
Was tun, wenn ein Argumentfehler auftritt? Falsche Anzahl von Argumenten (gegeben 2, erwartete 0) in Ihrem RSpec-Test