首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >安卓单元测试-没有这样的属性: bootClasspath

安卓单元测试-没有这样的属性: bootClasspath
EN

Stack Overflow用户
提问于 2015-02-10 22:29:14
回答 2查看 5.8K关注 0票数 19

在刚刚宣布的单元测试支持之后,我正在尝试为安卓执行一个简单的测试用例-- http://tools.android.com/tech-docs/unit-testing-support

仔细看完演练之后,我正在尝试运行./gradlew test。我得到了这个错误:

代码语言:javascript
复制
Execution failed for task ':app:compileDebugGroovy'.
> No such property: bootClasspath for class: com.android.build.gradle.AppPlugin

同时使用com.android.tools.build:gradle:1.1.0-rc1

还有谁被困在这上面了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-18 19:06:27

问题是Groovy Android Gradle plugin (让Groovy在Android上工作)不能简单地在1.1.0-rcX版本中使用Android plugin。

这里有一段非常有趣的代码,直接来自groovyx.grooid.GroovyAndroidPlugin,版本为0.3.5 (最新版本,这里是source)

代码语言:javascript
复制
    def getRuntimeJars(Project project, plugin) {
    int index
    switch (getAndroidPluginVersion(project)) {
        case ~/0\.9\..*/:
            index = 0
            break
        case ~/0\.10\..*/:
        case ~/0\.11\..*/:
        case ~/0\.12\..*/:
        case ~/0\.13\..*/:
        case ~/0\.14\..*/:
        case ~/1\.0\..*/:
            index = 1
            break
        default:
            index = RUNTIMEJARS_COMPAT.size()-1
    }
    def fun = RUNTIMEJARS_COMPAT[index]
    fun(plugin)
}

RUNTIMEJARS_COMPAT的定义

代码语言:javascript
复制
private static List RUNTIMEJARS_COMPAT = [
        { it.runtimeJars },
        { it.bootClasspath }
]

所以,在Android Gradle中,0.9.x0.10.0之间接口肯定发生了变化(是的,我知道-那些谷歌开发者改变了那里的一切:[ )。那么让我们来看看Android插件版本1.0.0中生成类问题

代码语言:javascript
复制
> javap -cp [path to proper jar] com.android.build.gradle.AppPlugin:

public class com.android.build.gradle.AppPlugin extends com.android.build.gradle.BasePlugin implements org.gradle.api.Plugin<org.gradle.api.Project> {
...
public java.util.List super$2$getBootClasspath();
...

是啊!这就是我们需要的方法(来自父com.android.build.gradle.BasePlugin类)。现在在1.1.0-rc3版本中没有这样的东西。更重要的是,com.android.build.gradle.AppPlugin的应用程序接口完全改变了,所以修复它不是简单的if(version)问题。

我猜在作者更新Groovy Android Gradle插件之前,没有机会让它与单元测试一起工作(从1.1.0开始)。

那我们就等着吧。

票数 12
EN

Stack Overflow用户

发布于 2015-02-16 10:05:48

该测试支持功能是实验性的。这就是说,也许你的问题没有快速的解决方案,或者可能是一个bug。

然而,我会更深入地研究这一点,阅读下面的消息:这一行Execution failed for task ':app:compileDebugGroovy'.提到了任务,所以我会去弄清楚任务是做什么的。我想这是一个交付的任务。错误是在该任务中有一个属性缺少> No such property: bootClasspath for class: com.android.build.gradle.AppPlugin

因此,可以尝试查找该任务,并确保为AppPlugin类设置了bootClasspath属性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28434161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档