やりたいこと
EspressoテストのKotlin化
Convert Java File To Kotlin Fileを実行した
困ったこと
テストを実行すると以下の例外が発生する
org.junit.internal.runners.rules.ValidationError: The @Rule 'mActivityRule' must be public.
原因
Kotlinで宣言したプロパティはJava側から見るとgetterとsetterがあるのみで、publicなフィールドとしてアクセスできないからである。
解決方法
Kotlinで書いたクラスのフィールドにJavaからアクセスしたい場合は以下のように@JvmFieldアノテーションをつける
@Rule @JvmField
var mActivityRule = ActivityTestRule(HogeActivity::class.java)
終わりに
Kotlinの言語仕様を知らないからこんなことになるので、基本的なところは学習する必要がある。
何かの参考になれば幸いです。
参考になったサイト
https://kotlinlang.org/docs/reference/java-to-kotlin-interop.html
https://proandroiddev.com/fix-kotlin-and-new-activitytestrule-the-rule-must-be-public-f0c5c583a865