3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

EspressoテストをKotlin化したらThe @Rule 'mActivityRule' must be public.エラーが出るのでその対策

Last updated at Posted at 2018-12-21

やりたいこと

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

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?