8

我想让 Robolectric 与 Android Studio 一起工作,并在查看此 [question][2] 的答案后尝试使用 [gradle-android-test-plugin][1],但没有运气。

  1. 我创建了一个全新的 Android 项目并将其命名为 MyApp。
  2. 我遵循了 README 的“使用”部分中的所有说明。
  3. 我还没有任何代码可以在我的新项目中进行测试,所以我从
gradle-android-test-plugin/example/src/test/java/com/example

gradle-android-test-plugin/example/src/main/java/com/example 

目录到我的新 MyApp 项目中的相应文件路径中。

我以前从未为 Android 实施过单元测试,也不知道下一步该做什么。./gradlew install我在插件的根目录中成功运行,但是在我的新项目的根目录中执行相同的操作没有任何效果。它引发了这样的抱怨:

Task 'install' is ambiguous in root project 'MyApp'. Candidates are: 'installDebug', 'installTest'.

我对 Gradle 一点也不熟悉,所以没有阅读 Gradle 本身的教科书,我不知道如何解决这个问题。

如果我进入包含AndroidManifest.xml并尝试../gradlew clean check构建和运行测试的 MyApp 目录,我会收到以下错误:

Could not determine the dependencies of task ':MyApp:testDebug'.

Android Studio 在查找我的依赖项时似乎没有任何问题。有人可以指出我运行测试的方向吗?我想这是一个简单的终端命令或插件自述文件中没有提到的东西。干杯!

编辑:

这是我的build.gradle。我知道它在结构上与插件中包含的示例项目的结构不同,但该结构给了我相同的错误。

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
        classpath 'com.squareup.gradle:gradle-android-test-plugin:0.9.+'
    }
}

apply plugin: 'android'
apply plugin: 'android-test'

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.0.1"

    defaultConfig {
        minSdkVersion 11
        targetSdkVersion 18
    }
}

dependencies {
    compile 'com.android.support:support-v4:18.0.0'

    testCompile 'junit:junit:4.11'
    testCompile 'org.robolectric:robolectric:2.1.+'
    testCompile 'com.squareup:fest-android:1.0.+'
}

编辑2:除了我发出了错误的命令(如 Ravindra 的回答所示)之外,我也没有意识到我的 Gradle 版本太新(正如 Jake 的评论指出的那样)。

4

3 回答 3

2

从主项目文件夹运行的可用任务列表

gradle tasks

用于测试

gradle tests
于 2013-08-19T09:19:28.233 回答
2

没有安装任务,但有两个以 install 为前缀的任务。您必须提供完整的任务名称或至少足以让 Gradle 确定您正在谈论的是哪一个(例如 installD、iD 或完整的 installDebug 将起作用)

https://github.com/square/gradle-android-test-plugin/issues/6#issuecomment-22881923

于 2013-08-19T16:12:00.510 回答
0

从插件的代码来看,您似乎应该运行./gradlew test命令来执行测试

于 2013-08-19T12:04:39.713 回答