android - 使用 Spock 和 Java 8 运行 Android 应用程序的问题

标签 android gradle groovy spock android-jack-and-jill

这是我的设置。我有一个带有几个 Java(不是 Android)模块的 Android 项目。

最近我开始使用 Spock(这是一个基于 JUnit 和 Groovy 的测试框架)。

在 Java 模块上,我只需使用 groovy 插件,如下所示:

apply plugin: 'groovy'

然后包括这些依赖项:
dependencies {
  testCompile 'org.spockframework:spock-core:1.0-groovy-2.4'
  testCompile 'org.codehaus.groovy:groovy-all:2.4.6'
  testCompile 'cglib:cglib-nodep:3.1'
  testCompile 'org.objenesis:objenesis:2.2'
}

在我的主要 Android 应用程序上,我进行了此设置。在根项目上,我有这个类路径依赖项:
classpath 'org.codehaus.groovy:gradle-groovy-android-plugin:0.3.9'

在应用程序模块上我应用它:
apply plugin: 'groovyx.grooid.groovy-android'

并像这样配置:
androidGroovy {
  options {
    configure(groovyOptions) {
      // used so groovy can do it's magic, I think, not 100% sure
      javaAnnotationProcessing = true 
    }
  }
  skipJavaC = true // if disabled my CPU melts for some reason
}

我还通过在 Android 上使用 Jack 标志启用了 Java 8:
jackOptions {
  enabled true
}

所有的测试都可以在 Spock 上完美运行(甚至是应用程序模块上的测试)。但是,当我尝试在设备或模拟器上运行该应用程序时,我会从 Android Studio 收到多个错误。错误发生在任务中:compileDebugGroovyWithJack它提示它无法从外部依赖项(包括支持库)中找到任何类:

enter image description here

有没有人遇到过这个问题?这是一个相当大的障碍:(

最佳答案

假设 JVM 测试的运行方式仍然与将 jack 添加到工具链之前的方式相同,那么这个“应该”工作。那就是 compileJava 仍然是一项任务,因为这是 groovy Android 插件所依赖的。

话虽如此,这不受支持,可能需要以不同的方式连接到新流程中。

关于android - 使用 Spock 和 Java 8 运行 Android 应用程序的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37265364/

相关文章:

java - 安卓查询参数

android - Android Webview文件和相机上传-Kotlin

android - RecyclerView 中的项目未按预期对齐

web-services - 如何在 SOAP UI 中修改 onRequestscript() 上的 xml

android - 将演示者类注册到 EventBus (android MVP)

android - 找不到 com.android.tools.build :aapt2:3. 3.2-5309881

gradle - 如何将 “gradle --stacktrace”设置为默认值?

android - 多次定义BuildConfig,Gradle Test Build报错

jenkins - 在 groovy 中以 10000 递增循环

java - 在 Gradle 构建脚本中使用 Java 类