title: Kotlin and new ActivityTestRule : The @Rule must be public
body: <p>I'm trying to make UI test for my android app in Kotlin. Since the new system using ActivityTestRule, I can't make it work: it compiles correctly, and at runtime, I get:</p>
  
  <pre class="lang-none prettyprint-override"><code>java.lang.Exception: The @Rule 'mActivityRule' must be public.
      at org.junit.internal.runners.rules.RuleFieldValidator.addError(RuleFieldValidator.java:90)
      at org.junit.internal.runners.rules.RuleFieldValidator.validatePublic(RuleFieldValidator.java:67)
      at org.junit.internal.runners.rules.RuleFieldValidator.validateField(RuleFieldValidator.java:55)
      at org.junit.internal.runners.rules.RuleFieldValidator.validate(RuleFieldValidator.java:50)
      at org.junit.runners.BlockJUnit4ClassRunner.validateFields(BlockJUnit4ClassRunner.java:170)
      at org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:103)
      at org.junit.runners.ParentRunner.validate(ParentRunner.java:344)
      at org.junit.runners.ParentRunner.&lt;init&gt;(ParentRunner.java:74)
      at org.junit.runners.BlockJUnit4ClassRunner.&lt;init&gt;(BlockJUnit4ClassRunner.java:55)
      at android.support.test.internal.runner.junit4.AndroidJUnit4ClassRunner.&lt;init&gt;(AndroidJUnit4ClassRunner.java:38)
      at android.support.test.runner.AndroidJUnit4.&lt;init&gt;(AndroidJUnit4.java:36)
      at java.lang.reflect.Constructor.constructNative(Native Method)
      at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
      at android.support.test.internal.runner.junit4.AndroidAnnotatedBuilder.buildAndroidRunner(AndroidAnnotatedBuilder.java:57)
      at android.support.test.internal.runner.junit4.AndroidAnnotatedBuilder.runnerForClass(AndroidAnnotatedBuilder.java:45)
      at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
      at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29)
      at org.junit.runner.Computer.getRunner(Computer.java:38)
      at org.junit.runner.Computer$1.runnerForClass(Computer.java:29)
      at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
      at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:98)
      at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:84)
      at org.junit.runners.Suite.&lt;init&gt;(Suite.java:79)
      at org.junit.runner.Computer.getSuite(Computer.java:26)
      at android.support.test.internal.runner.TestRequestBuilder.classes(TestRequestBuilder.java:691)
      at android.support.test.internal.runner.TestRequestBuilder.build(TestRequestBuilder.java:654)
      at android.support.test.runner.AndroidJUnitRunner.buildRequest(AndroidJUnitRunner.java:329)
      at android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:226)
      at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1584)
  </code></pre>
  
  <p>Here is how I declared mActivityRule:</p>
  
  <pre><code>RunWith(javaClass&lt;AndroidJUnit4&gt;())
  LargeTest
  public class RadisTest {
  
      Rule
      public val mActivityRule: ActivityTestRule&lt;MainActivity&gt; = ActivityTestRule(javaClass&lt;MainActivity&gt;())
  
     ...
  }
  </code></pre>
  
  <p>It is already public :/</p>