2013-06-18 2 views
17

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

... 
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: работает контрольно-измерительная аппаратураТесто в устройстве. (это всегда срабатывало).

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

ответ

1

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

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

    check.dependsOn connectedInstrumentTest

  2. Как я могу запустить тесты, которые не нуждаются в Android среде?

Для андроида проектов мы можем обсудили около 3 видов испытаний

  1. JUnit Test
  2. Robolectric Test
  3. измерительный прибор

тест Junit

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

Robolectric Test

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

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

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

Мы должны использовать структуру папок по умолчанию для того, чтобы использовать этот плагин. Мы должны использовать папку под названием «тест», чтобы сохранить 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.+' 
} 

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

Test Instrument

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

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

+4

Плагин с градиентом-андроид-тест-плагин устарел, и вы больше не должны его использовать (он просто не работает с последним плагином для градиента android) – tomrozb

+0

Плагин был переименован в ** robolectric-gradle-plugin ** и теперь поддерживается командой Robolectric: https://github.com/robolectric/robolectric-gradle-plugin – friederbluemle

Смежные вопросы