【问题标题】:Android Unit Test of Kotlin class fails with "cannot find symbol class ..."Kotlin 类的 Android 单元测试因“找不到符号类...”而失败
【发布时间】:2014-12-08 01:03:00
【问题描述】:

我最近将 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 插件之间的冲突,现已解决。

【问题讨论】:

  • 您能否用有关您的分辨率的注释来更新问题,您在另一条评论中说“问题似乎是我正在使用的 gradle-retrolambda 插件的旧版本”,但人们不应该有阅读所有 cmets 以了解问题的状态;因为它也不是答案的一部分。

标签: android gradle android-testing kotlin


【解决方案1】:

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

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

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

【讨论】:

  • 娜塔莉亚,谢谢你的回答。我在groups.google.com/forum/#!topic/adt-dev/LvlkgNlTvtA 提供了更多信息,我还指出了一种解决方法。我的项目相当大,所以我将尝试获取一个最小的工作示例并将其发布在此处和错误跟踪器上。
  • 回答另一个问题,是的,我在依赖项中有 std-lib。
  • 哦,看来问题是出于兼容性原因我正在使用的 gradle-retrolambda 插件的旧版本。很抱歉给您带来麻烦。
  • 我遇到了同样的问题(而且我不使用 gradle-retrolambda)。我确实在依赖项中有stdlib。 Kotlin 代码作为这样的构建,工作(我的意思是应用程序运行),我只能运行基于 InstrumentationCase 的测试套件。我正在使用 Android Studio 运行我的单元测试。
  • 确切地说,我收到了NoClassDefFoundError 异常。如果您有兴趣,我可以向您提供我的项目 - 这只是爱好代码,我对 Kotlin 感兴趣,所以我正在尝试。但不幸的是,无法进行单元测试将是一个阻碍......
【解决方案2】:

虽然在另一个答案中正在调查该问题,但这里有一个临时解决方法。将此添加到您的 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')
}

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

【讨论】:

  • 没有帮助,很遗憾。
猜你喜欢
  • 1970-01-01
  • 2013-07-06
  • 2015-11-15
  • 1970-01-01
  • 2014-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多