[JAVA] La @ Rule'mActivityRule 'doit être publique. Si vous convertissez le test Espresso en Kotlin, une erreur se produira.

Chose que tu veux faire

Kotlinisation du test Espresso

Exécution du fichier Java de conversion en fichier Kotlin

difficulté

Lorsque j'exécute le test, j'obtiens l'exception suivante

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

Cause

En effet, les propriétés déclarées dans Kotlin n'ont que des getters et des setters lorsqu'elles sont vues du côté Java et ne sont pas accessibles en tant que champs publics.

Solution

Si vous souhaitez accéder aux champs de la classe écrite en Kotlin depuis Java, ajoutez l'annotation @JvmField comme suit.

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

À la fin

Cela se produit parce que je ne connais pas les spécifications linguistiques de Kotlin, donc j'ai besoin d'apprendre les bases. J'espère que cela vous sera utile.

Site utile

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

La @ Rule'mActivityRule 'doit être publique. Si vous convertissez le test Espresso en Kotlin, une erreur se produira.
Validé comme "jusqu'à 6 caractères alphanumériques", "seuls les caractères pleine largeur peuvent être utilisés" et "une erreur se produira si le champ est vide"
Que faire si vous obtenez une erreur avec l'authentification de base pendant le code de test Rails
Que faire si le message "Un serveur est déjà en cours d'exécution" s'affiche. Erreur lors de la tentative de démarrage du serveur rails
Si vous souhaitez satisfaire la couverture de test des méthodes privées dans JUnit
Si vous lancez null à Servlet avec ajax, il sera converti en blanc ""
Que faire si vous obtenez une erreur d'argument: nombre incorrect d'arguments (donné 2, attendu 0) dans votre test RSpec