web-dev-qa-db-ja.com

@Rule>はKotlinJunitテストでpublicValidationErrorである必要があります

ユニットテストルールのアノテーションを使用しようとしましたが、Android Studioはここでエラーを強調表示しませんでした:

@Rule val htmlManager = HtmlManager()

ただし、テストの実行後、次のエラーが発生します。

org.junit.internal.runners.rules.ValidationError:@ Rule'htmlManager 'はパブリックである必要があります。

これを修正する方法は?

13
donfuxx

解決策は、@ Ruleアノテーションをプロパティゲッターに適用することです。

@get:Rule
val htmlManager = HtmlManager()

詳細はこちら: https://kotlinlang.org/docs/reference/annotations.html#Java-annotations

私のオープンソースプロジェクトで修正されたテストケースコードを参照してください: https://github.com/appham/Sharemarks/commit/310c115d5a820be900abc321cc061aeab7af2e5a#diff-5e1e851ef5b9bb333abb96dec3199a94

29
donfuxx

@JvmFieldアノテーションを使用することもできます

@Rule @JvmField 
val htmlManager = HtmlManager()
6
Steve