Intereting Posts
Обработка элемента меню Click Event – Android Могу ли я программировать для android с использованием любого языка JVM? Предварительная загрузка изображений в память / диск с помощью Android Picasso Расширение RelativeLayout и переопределение dispatchDraw () для создания масштабируемой ViewGroup Android: получите программную информацию по программному обеспечению Android: Как настраивать-объявить пространство имен XML в styles.xml? CollapsingToolbarLayout не распознает прокрутку Разрешение отклонено (отсутствует разрешение INTERNET?): Но предоставляется разрешение Android закрыть приложение на кнопку назад Android – значок уведомления о появлении строки состояния Android GridView с категориями? Шаблон панели управления Android VS-код для Android. Является ли это возможным? Возвратный переход не работает корректно при использовании общих разделов фрагментов ErrnoException: isConnected failed: EHOSTUNREACH (без маршрута к хосту) при изменении сети Wi-Fi с использованием ICS

Написание сценария Gradle для запуска модульных тестовых примеров для проекта Eclipse Android Test

У меня есть простой проект Android HelloWorld (встроенный в Eclipse IDE), я могу успешно выполнить «градирную сборку» в командной строке cmd для этого проекта.

Также я написал для него простой проект тестирования JUnit для Android, и он отлично работает в Eclipse.

Теперь я хочу запустить этот тестовый проект или модульные тесты (если мое понимание неверно!), Используя сценарий Gradle. Как мне это сделать?

Ниже приведен файл build.gradle, который я использую. Я хочу знать, как написать код сценария для автоматизации выполнения тестового примера.

buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.10.+' } } apply plugin: 'android' dependencies { compile fileTree(dir: 'libs', include: '*.jar') } android { compileSdkVersion 19 buildToolsVersion "19.0.3" sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs = ['src'] aidl.srcDirs = ['src'] renderscript.srcDirs = ['src'] res.srcDirs = ['res'] assets.srcDirs = ['assets'] } test { java.srcDirs = ['src/test/java'] resources.srcDirs = ['src/test/resources'] } // Move the tests to tests/java, tests/res, etc... instrumentTest.setRoot('tests') androidTest.setRoot('tests') // Move the build types to build-types/<type> // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ... // This moves them out of them default location under src/<type>/... which would // conflict with src/ being used by the main source set. // Adding new build types or product flavors should be accompanied // by a similar customization. debug.setRoot('build-types/debug') release.setRoot('build-types/release') } } 

Solutions Collecting From Web of "Написание сценария Gradle для запуска модульных тестовых примеров для проекта Eclipse Android Test"

Вот что я использую:

 android { // ... // your stuff // ... // So Android Studio can nicely edit the test files sourceSets { androidTest { java.srcDir file('src/test/java') } } } // <Task to run tests> sourceSets { unitTest { java.srcDir file('src/test/java') } } configurations { unitTestCompile.extendsFrom runtime unitTestRuntime.extendsFrom unitTestCompile } task unitTest(type: Test, dependsOn: assemble) { description = "run unit tests" testClassesDir = project.sourceSets.unitTest.output.classesDir classpath = project.sourceSets.unitTest.runtimeClasspath } check.dependsOn unitTest // </Task to run tests> dependencies { // ... // compile stuff // .... unitTestCompile files("$project.buildDir/classes/release") unitTestCompile 'junit:junit:4.11' } 

Запустите тест:

 gradlew unitTest 

Это решение еще не реализовано и проверено. Работа продолжается, комментарии приветствуются.

После прочтения всего руководства пользователя , ясно, что нет прямой поддержки проектов Eclipse Android Test. Причина в том, что новая система сборки использует стиль Gradle (и Maven) для тестирования модуля внутри модуля / проекта.

Но поскольку проекты Eclipse Android Test по-прежнему представляют собой Android-проект, есть способ попробовать

  1. Добавьте build.gradle увидеть проект Eclipse Android Test.
    Он должен compile project(':app') в dependencies

     /* Android * http://www.nodeclipse.org/projects/gradle * Nodeclipse/Enide build.gradle template for classic Android project * https://github.com/Nodeclipse/nodeclipse-1/blob/master/org.nodeclipse.enide.editors.gradle/docs/android/build.gradle * Gradle Plugin User Guide: * http://tools.android.com/tech-docs/new-build-system/user-guide * Usage * 1. put in project root * 2. check version numbers * 3. use from command line or with Gradle for Android http://marketplace.eclipse.org/content/gradle * Support for this template * https://github.com/nodeclipse/nodeclipse-1/issues/ * History * 2014-03-13 android plugin updated to 0.9, see http://tools.android.com/tech-docs/new-build-system/migrating_to_09 * 2014-04-01 check for gradle version * 2014-04-10 wrapper and runAndroidApplication tasks * 2014-04-25 rename to run, add << * 2014-05-23 defaut plugin version 0.10.x * 2014-06-06 show "boilerplate part" * @author Paul Verest */ println GradleVersion.current().prettyPrint() assert gradle.gradleVersion >= "1.10" // android plugin 0.10 requires Gradle 1.10, 1.11, 1.12 // after `gradle wrapper` it is possible to use './gradlew build' with Gradle version specified task wrapper(type: Wrapper) { gradleVersion = '1.12' } //{ "boilerplate part" buildscript { repositories { mavenCentral() //jcenter() } dependencies { classpath 'com.android.tools.build:gradle:0.10.+' } } apply plugin: 'android' dependencies { compile fileTree(dir: 'libs', include: '*.jar') //androidTestCompile 'com.jayway.android.robotium:robotium-solo:4.3.1' // for multi-module project build (needs `settings.gradle`): // reference needed modules or App under test (for Eclipse Android Test project) compile project(':app') } android { compileSdkVersion 19 buildToolsVersion "19.0.3" sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs = ['src'] aidl.srcDirs = ['src'] renderscript.srcDirs = ['src'] res.srcDirs = ['res'] assets.srcDirs = ['assets'] } // Move the tests to tests/java, tests/res, etc... androidTest.setRoot('tests') // Move the build types to build-types/<type> // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ... // This moves them out of them default location under src/<type>/... which would // conflict with src/ being used by the main source set. // Adding new build types or product flavors should be accompanied // by a similar customization. debug.setRoot('build-types/debug') release.setRoot('build-types/release') } } //} "boilerplate part" 
  2. Поскольку приложение и его тест теперь делают многомодульный проект, добавьте settings.gradle . Самый простой способ поставить его на 1 уровень вниз (папка, где оба проекта)

     include ':app' include ':apptest' 

    Другой способ заключается в том, чтобы поместить в папку sibling, например, названный parent

     includeFlat 'app' includeFlat 'apptest' 

    В более позднем случае вам нужно будет запустить сборку из этой папки (или указать каждый раз settings.gradle location с опцией -c CLI

ОБНОВЛЕНИЕ Проводя исследования чистых тестов JUnit с помощью gradle (немного внеконкурсного для этого вопроса), похоже, что команда Android Tooling игнорирует этот вопрос, нарушая то, что другие разработчики пытаются сделать с новым плагином для Android. Даже в Android Studio это не так. Как я могу создавать тесты в Android Studio? , Единственное, что волнует, – это Robolectric, которые имеют свои рамки для чистого тестирования JUnit. https://github.com/robolectric/gradle-android-test-plugin