Gradle Android-тестирование

Я новичок в gradle и Android Studio, и я пытаюсь выяснить, как запускать тесты. Я выполнял инструкции в http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Testing, и я могу запускать Instrument Tests, но выполнял только /gradlew connectedInstrumentTest. У меня возникают проблемы с пониманием других задач check, которые не выполняют какой-либо код в моем приложении. Это то, что ./gradlew tasks prints

...
Verification tasks
------------------
check - Runs all checks.
connectedCheck - Runs all device checks on currently connected devices.
connectedInstrumentTest - Installs and runs the tests for Build 'Debug' on connected devices.
deviceCheck - Runs all device checks using Device Providers and Test Servers.
...

Если check запускает все проверки... не следует ли запускать те, которые я получаю от connectedInstrumentTest?

Также, как я могу запускать тесты, которые не нуждаются в среде Android? Должен ли я разместить их под /test/java? Если да, какую команду я должен выполнить для их выполнения?

Извините, если эти вопросы кажутся очень очевидными, но я просто не смог найти ответа на эти вопросы в документах.

Спасибо!

Edit:

Итак, я сделал некоторый прогресс здесь. Похоже, что check ничего не делает. Было бы (прямо сейчас) разработчиком добавить зависимые задачи к check для запуска некоторых тестов JUnit. Вам нужно будет создать задачу, заставить ее находить источники, компилировать их и запускать.

connectedCheck и connectedInstrumentTest: запускает InstrumentTest в устройстве. (это всегда срабатывало).

deviceCheck: Это полезно, как говорят документы, для тестирования интеграции Continuos.

Ответы

Ответ 1

  • Если проверка запускает все проверки... не следует ли запускать те, которые я получаю от connectedInstrumentTest?  вам может потребоваться запустить connectedInstrumentTest задачи в качестве зависимости для проверки задачи.

    check.dependsOn connectedInstrumentTest

  • Как я могу запускать тесты, которым не нужна среда Android?

Для проектов Android мы можем обсудить около 3 типов тестов

Тест Junit

Мы не можем использовать простой тест junit для проверки связанных с Android классов. Что мы можем сделать, так это отдельные классы ядра Java для проекта библиотеки java и добавить эту зависимость к проекту андроида.

Robolectric Test

Мы можем использовать robolectric test для запуска модульных тестов вне эмулятора. Это делает тесты быстрыми и легкими для настройки с серверами CI.

Для запуска robolectric test мы используем gradle-android-test-plugin Он четко описывает, как использовать этот плагин.

Структура проекта

Мы должны использовать структуру папок по умолчанию, чтобы использовать этот плагин. Мы должны использовать папку под названием "test", чтобы сохранить robolectric тесты:

 MyProject/
   | settings.gradle
   | build.gradle
   - app/
       | build.gradle
        -main
           -java
              -com.example.calculator    

        -test
           -java
              -com.example.calculator.robolectrictests

файл сборки

buildscript {
    repositories {
        mavenCentral()
        maven {
            url 'https://oss.sonatype.org/content/repositories/snapshots/'
        }
    }
}
dependencies {
    classpath 'com.android.tools.build:gradle:0.6.+'
    classpath 'com.squareup.gradle:gradle-android-test-plugin:0.9.1-SNAPSHOT'
}
apply plugin: 'android'
apply plugin: 'android-test'

repositories {
    mavenCentral()
}
android {
    compileSdkVersion 19
    buildToolsVersion "19.0.0"
    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 19         
    }
}
dependencies {
    compile 'com.android.support:appcompat-v7:+'   
    testCompile 'junit:junit:4.10'
    testCompile 'org.robolectric:robolectric:2.1.+'
    testCompile 'com.squareup:fest-android:1.0.+'
}

Эта тестовая задача будет автоматически выполняться с задачей проверки.

Тест инструмента

Как вы уже упоминали, для этого требуется использовать эмулятор android. Это делает тесты медленными, что означает, что они не являются хорошим способом делать TDD.

Мы можем использовать robolectric test в качестве модульных тестов в процессе TDD. Инструментальный тест, который мы можем использовать в качестве интегрированного теста в TDD.

Ответ 2

проверить СЛЕДУЕТ запускать контрольно-измерительные тесты IIRC. О запуске тестов без android. В настоящее время плагин android- gradle не поддерживает его. Однако я сделал плагин для запуска тестов JUnit с robolectric, поэтому вам не нужны контрольные тесты. Вот ссылка: android-unit-test