1

我最近将 Kotlin 插件添加到我的 Android 应用程序的构建中,现在我想在 InstrumentationTestCase 中测试 Kotlin 类。

IntelliJ/Android Studio 在编辑器中看到该类,并且似乎在启动应用程序时已编译该类,但是当我启动gradlew assembleTest它时失败并显示“找不到符号 [类名称]”。

在我的 build.gradle 中,我将 kotlin 文件夹添加为 srcDir

sourceSets {
    main {
        manifest.srcFile 'src/main/AndroidManifest.xml'
        java.srcDirs += 'src/main/kotlin'
    }
}

有什么建议吗?

编辑:这个问题是 Kotlin 和 Retrolambda 插件之间的冲突,现在已经解决。

4

2 回答 2

3

我来自 Kotlin 项目。你能回答几个问题来帮助我重现你的问题吗?您是gradlew assembleTest从 IDE 运行还是从命令行运行?你在依赖项中有 kotlin-stdlib 吗?

dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}

你能给我们提供你的项目吗?我在您的跟踪器中创建了一个问题,因此很高兴在这里看到您的答案http://youtrack.jetbrains.com/issue/KT-6015

于 2014-10-14T06:22:36.253 回答
0

虽然在另一个答案中正在调查该问题,但这里有一个临时解决方法。将此添加到您的 build.gradle:

afterEvaluate { project ->
    project.tasks.findAll {
        it.name.startsWith('compile') && it.name.endsWith('DebugTestJava')
    }.each { Task task ->
        task.dependsOn copyKotlinToTest
    }
}

task copyKotlinToTest(type: Copy) {
    from new File(buildDir, 'tmp/kotlin-classes/debug')
    into new File(buildDir, 'tmp/kotlin-classes/debugTest')
}

如果您有构建变体,则需要调整文件夹的名称。

于 2014-10-14T09:43:07.853 回答