如何从java测试代码访问内部属性
我有一个属性标记为内部的类。 然后我尝试从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
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)可以访问它
- 通过其丑陋的名称访问该属性。它应该有点像
。使用自动完成。发件人: 内部类的成员要进行名称更改,以使 很难从Java中意外使用它们,也很难允许对 具有相同签名的成员根据 科特林规则activity.setSomeProperty$production.
它将变量视为受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代码中的内容相同,但可能不是。