无法使用Android从测试来源访问内部组件
我有以下结构:
build.gradle src - main - AndroidManifest.xml - kotlin - pkg - MyClass.kt (internal class MyClass) - test - kotlin - pkg - MyClassTest.kt
在MyClassTest.kt
我引用internal class MyClass
。
build.gradle
:
apply plugin: 'com.android.application' apply plugin: 'kotlin-android' //apply plugin: 'java' //apply plugin: 'kotlin' android { compileSdkVersion 23 buildToolsVersion "23.0.2" sourceSets { main.java.srcDirs += 'src/main/kotlin' test.java.srcDirs += 'src/test/kotlin' } } dependencies { testCompile 'junit:junit:4.12' compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" } buildscript { ext.kotlin_version = '1.0.0-beta-2423' repositories { mavenCentral() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } repositories { mavenCentral() }
现在当我运行./gradlew test
,我得到以下错误:
无法访问“MyClass”:在“pkg”中是“内部”
然而,当我切换插件使用java
而不是com.android.application
和kotlin
而不是kotlin-android
,测试成功。
在使用Android插件时,如何从测试资源中引用内部类?
这个问题存在bug KT-9441 (正如@Andrey所指出的那样),现在已经被修复了。 最新的Kotlin及其Gradle插件应该没有问题。