如何从java测试代码访问内部属性

如何从java测试代码访问内部属性,java,android,unit-testing,kotlin,Java,Android,Unit Testing,Kotlin,我有一个属性标记为内部的类。 然后我尝试从java中的测试代码中设置该属性。 我如何访问这些属性?测试代码和类代码在同一个包中 例如: class MainActivity : AppCompatActivity() { interal var someProperty = "test" } 测试代码: @Test public void firstStartTest() { val activity = MainActivity() activity.setSome

我有一个属性标记为内部的类。 然后我尝试从java中的测试代码中设置该属性。 我如何访问这些属性?测试代码和类代码在同一个包中

例如:

class MainActivity : AppCompatActivity() {
    interal var someProperty = "test"
}
测试代码:

@Test
public void firstStartTest() {
    val activity = MainActivity() 
    activity.setSomeProperty("something") //does not compile

}
Android Studio建议使用activity.setSomeProperty$production\u sources\u for_module\u app(); 但这也无法编译

两个类(MainActivity和test类)必须在一个模块中。这是一个模块定义:

更具体地说,模块是一起编译的一组Kotlin文件:

  • 智能思维模块
  • Maven或Gradle项目
  • 一组文件 通过一次Ant任务调用编译


这意味着,检查您的项目结构。

有两种方法:

  • 使属性
    受保护
    。请注意Java和Kotlin如何区别对待
    受保护的
    。在Java中,同一个包中的其他类可能访问受保护的成员。因此,您的测试类(Java)可以访问它
  • 通过其丑陋的名称访问该属性。它应该有点像
    activity.setSomeProperty$production.
    。使用自动完成。发件人: 内部类的成员要进行名称更改,以使 很难从Java中意外使用它们,也很难允许对 具有相同签名的成员根据 科特林规则

添加@JvmField注释。
它将变量视为受java保护的

我在同一个gradle项目中有它。类位于\app\src\main\kotlin\pl\orendi\bit\MainActivity.kt中,测试位于\app\src\androidTest\java\pl\orendi\bit\test.java中。我使用包字段进行字段注入,是否可以使用kotlin?尝试创建与kotlin类相同的测试。因为我没有找到任何确切描述从Java代码访问内部Kotlin属性的内容,所以假设应该与Kotlin代码中的内容相同,但可能不是。