【问题标题】:The @Rule > must be public ValidationError in Kotlin Junit test@Rule > 必须是 Kotlin Junit 测试中的公共 ValidationError
【发布时间】:2018-05-10 14:03:27
【问题描述】:

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

@Rule val htmlManager = HtmlManager()

但是执行测试后会出现以下错误:

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

如何解决这个问题?

【问题讨论】:

    标签: android unit-testing junit kotlin


    【解决方案1】:

    另一种解决方案是:

    val htmlManager = HtmlManager()
        @Rule get() = field
    

    【讨论】:

      【解决方案2】:

      你也可以使用@JvmField注解

      @Rule @JvmField 
      val htmlManager = HtmlManager()
      

      【讨论】:

        【解决方案3】:

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

        @get:Rule
        val htmlManager = HtmlManager()
        

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-07-08
          • 2012-12-29
          • 1970-01-01
          • 1970-01-01
          • 2017-03-03
          • 2018-08-01
          • 2010-10-01
          • 2016-09-08
          相关资源
          最近更新 更多