使用Gradle构建系统创建测试Android应用程序包

7
我正在将我的Android项目迁移到Gradle构建系统,但我无法从我的集成测试Android项目中导入Android项目。
我使用了多项目配置,包含几个Android库,并且它运行得很好,但是我在设置多项目测试项目时遇到了问题。由于外部原因,我需要继续使用这个结构。
MyProject/
 | settings.gradle
 + MyApp/
    | build.gradle
    | src
    | res
    | libs
 + Instrumentation-Tests/
    | build.gradle
    | src
    | res
    | libs

我的当前配置文件如下:

settings.gradle:

include ':MyApp', 'Instrumentation-Tests'

MyAppp/build.gradle:

apply plugin: 'android'

repositories {
    mavenCentral()
}

dependencies {
    compile files('.....jar')
    compile project('....')
    compile 'com.android.support:support-v4:13.0.+'
}

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 11
        targetSdkVersion 16
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }

    }
}

最后是我的 Instrumentation-Tests/build.gradle 文件:
apply plugin: 'android'

repositories {
    mavenCentral()
}

dependencies {
    compile project(':MyApp')
    compile files('.....jar')
    compile 'com.android.support:support-v4:13.0.+'
}

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 11
        targetSdkVersion 16
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }
    }
}

当我运行gradle compileDebug时,项目MyApp(包括其所有模块)编译成功,但是Instrumentation-Tests编译失败,因为它找不到在MyApp中定义的android类。
我已经阅读了文档和许多帖子,但我无法使其正常工作。我也尝试使用:
compile(project(':MyApp')) { transitive = true }

在声明依赖项时,是否有人遇到了同样的问题?我想将MyApp项目依赖项的输出包含在Instrumentation-Tests编译的类路径中,但我不知道是否可以使用android gradle插件实现。

你有没有阅读过这样的内容:https://dev59.com/kmQn5IYBdhLWcg3wxZcn 和 http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Testing?我想知道如果你按照那些指示但改变了sourcesets的位置,它是否能够适用于你当前的设置。你可能需要相对于项目根目录来指定测试源目录。 - jDutton
我最终将所有内容都移动到了Gradle结构中,我还将所有的仪器测试(单元和功能)都移动到了instrumentationTest文件夹中,一切都正常工作! - David
1个回答

1

目前来说,这是行不通的,因为你只能将库项目指定为依赖项。

所以对于 compile project(':MyApp') 这种情况,MyApp 应该是一个 Android 库项目,在它的 build.gradle 中应用了 apply plugin: 'android-library'。但这显然没有意义。

要有一个单独的测试项目,你需要其他的东西(我正在自己研究)。

编辑:放弃使用 Gradle 进行测试,改用 Ant。


我最终将所有内容都移动到了Gradle结构中,我还将所有的仪器测试(单元和功能)都移动到了instrumentationTest文件夹中,一切都正常工作! - David

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接