@Rule>必须是Kotlin Junit测试中的公共ValidationError

don*_*uxx 12 junit android unit-testing kotlin

我尝试使用单元测试规则注释,Android Studio没有突出显示任何错误:

@Rule val htmlManager = HtmlManager()
Run Code Online (Sandbox Code Playgroud)

但是在执行测试后发生以下错误:

org.junit.internal.runners.rules.ValidationError:@Rule'htmlManager'必须是公开的.

如何解决这个问题?

don*_*uxx 29

解决方案是将@Rule注释应用于属性getter:

@get:Rule
val htmlManager = HtmlManager()
Run Code Online (Sandbox Code Playgroud)

更多细节:https://kotlinlang.org/docs/reference/annotations.html#java-annotations

看到这里我的开源项目固定测试用例代码:https://github.com/appham/Sharemarks/commit/310c115d5a820be900abc321cc061aeab7af2e5a#diff-5e1e851ef5b9bb333abb96dec3199a94


Ste*_*eve 7

您也可以使用@JvmField注释

@Rule @JvmField 
val htmlManager = HtmlManager()
Run Code Online (Sandbox Code Playgroud)