Как использовать плагин gradle-android-test

Я хочу, чтобы Robolectric работал с Android Studio, и я пытаюсь использовать [gradle-android-test-plugin][1] после просмотра ответов на этот [вопрос][2], но мне не повезло.

  1. Я создал совершенно новый проект Android и назвал его MyApp.
  2. Я следовал всем инструкциям в разделе «Использование» README.
  3. У меня еще не было кода для тестирования в моем новом проекте, поэтому я скопировал классы (включая `RobolectricGradleTestRunner`) из
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, я не уверен, как решить эту проблему.

Если я войду в каталог MyApp, содержащий AndroidManifest.xml, и попробую ../gradlew clean check построить и запустить тесты, я получу эту ошибку:

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

У Android Studio, похоже, нет проблем с поиском моих зависимостей. Может ли кто-нибудь указать мне направление для запуска моих тестов, пожалуйста? Я предполагаю, что это простая команда терминала или что-то, что не было упомянуто в README плагина. Ваше здоровье!

редактировать:

Вот мой 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.+'
}

edit2: Помимо того факта, что я выдавал неправильные команды (как указано в ответе Равиндры), я также не понял, что моя версия Gradle была слишком новой (как указывает комментарий Джейка).


person artburkart    schedule 19.08.2013    source источник
comment
RE: Не удалось определить зависимости задачи ':MyApp:testDebug'. Gradle 1.7 пока не поддерживается.   -  person Jake Wharton    schedule 19.08.2013
comment
... и вот как вы заставляете оболочку использовать 1.6: gradle.org/ docs/current/userguide/gradle_wrapper.html, затем запустите оболочку gradle (НЕ оболочку ./gradlew)   -  person CjS    schedule 10.10.2013
comment
Эта проблема отслеживается на github, и готовится ее исправление. очень скоро. К тому времени, когда вы читаете это, он, вероятно, уже доступен.   -  person gMale    schedule 14.10.2013


Ответы (3)


Задачи установки нет, но есть две задачи с префиксом install. Вы должны указать полное имя задачи или, по крайней мере, достаточно, чтобы Gradle понял, о какой из них вы говорите (например, installD, iD или полная установка installDebug будет работать)

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

person ravidsrk    schedule 19.08.2013
comment
Значит, мой build.gradle не завершен? Благодаря вашей помощи я теперь понимаю, что ./gradlew install относится к build.gradle в корневом каталоге плагина, но откуда берется installDebug? Когда я пробую gradle testDebug, я все еще получаю знакомое Could not determine the dependencies of task ':MyApp:testDebug'. - person artburkart; 20.08.2013

для списка доступных задач, запускаемых из основной папки проекта

gradle tasks

для тестов

gradle tests
person robotoaster    schedule 19.08.2013
comment
Если я попробую gradle tasks или gradle test, то получу следующее: Could not determine the dependencies of task ':MyApp:testDebug'. Если попробую gradle tests, то вот что я получу: Task 'tests' not found in project ':MyApp'. Some candidates are: 'tasks', 'test'. - person artburkart; 19.08.2013

Из кода плагина кажется, что вы должны запустить команду ./gradlew test для выполнения тестов.

person Nikita Skvortsov    schedule 19.08.2013
comment
Да, я тоже видел упоминание об этом в README плагина. Но ./gradlew test из корневого каталога или ../gradlew test из каталога, содержащего AndroidManifest.xml, приводит к: Could not determine the dependencies of task ':MyApp:testDebug'. - person artburkart; 19.08.2013