Использование Espresso 2.0 + Roboelectric в проекте Android

У меня уже есть куча робоэлектрических испытаний. Я хочу добавить Espresso 2.0, который недавно был представлен.

Roboelectric представила шаблонный проект deckard-gradle для решения проблемы совместного использования Roboelectric и Espresso. но решение для Espresso 1.1, которое сейчас устарело.

Это часть моего файла build.gradle для использования Espresso 2.0, в то время как у меня есть Roboelectric, а также следуя инструкциям Espresso 2.0:

buildscript {
    repositories {
        mavenCentral()
        maven { url 'http://download.crashlytics.com/maven' }
    }

    dependencies {
        classpath 'org.robolectric:robolectric-gradle-plugin:0.13.2'
    }
}

apply plugin: 'com.android.application'
apply plugin: 'robolectric'

android {
    packagingOptions {
        exclude 'LICENSE.txt'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE'
    }
    compileSdkVersion 21
    buildToolsVersion "21.1.2"
    defaultConfig {
        versionCode 1
        versionName '1.0'
        minSdkVersion 9
        targetSdkVersion 21
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
}

robolectric {
    include '**/*Test.class'
    exclude '**/espresso/**/*.class'
}

dependencies {
    androidTestCompile 'com.android.support.test:testing-support-lib:0.1'
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.0'

    androidTestCompile('junit:junit:4.11') {
        exclude module: 'hamcrest-core'
    }
    androidTestCompile('org.robolectric:robolectric:2.4') {
        exclude module: 'classworlds'
        exclude module: 'commons-logging'
        exclude module: 'httpclient'
        exclude module: 'maven-artifact'
        exclude module: 'maven-artifact-manager'
        exclude module: 'maven-error-diagnostics'
        exclude module: 'maven-model'
        exclude module: 'maven-project'
        exclude module: 'maven-settings'
        exclude module: 'plexus-container-default'
        exclude module: 'plexus-interpolation'
        exclude module: 'plexus-utils'
        exclude module: 'wagon-file'
        exclude module: 'wagon-http-lightweight'
        exclude module: 'wagon-provider-api'
        exclude group: 'com.android.support', module: 'appcompat-v7'
        exclude group: 'com.android.support', module: 'support-v4'
    }
}

Но я не могу запустить Roboelectric и Espresso test по отдельности. Я ценю за любое предложение.

Дополнения:

to run roboelectric test : gradlew test
to run espresso: gradlew connectedAndroidTest

2 ответа

Попробуйте использовать этот стартовый проект для Android: https://github.com/freezy/android-seed

У этого есть много особенностей:

  • Прекрасно загружается в Android Studio
  • Robolectric тесты работают и отлаживаются в IDE (для модульного тестирования)
  • Тесты эспрессо работают и отлаживаются в IDE (для функционального тестирования)
  • Последние совместимые библиотеки Lollipop готовы к использованию
  • Тестовое покрытие включено

Я исключил тесты, чтобы выполнить то, что вы хотите.

sourceSets {
    androidTest {
        java {
            exclude 'com/company/project/**/*Test.java'
        }
    }
}

а также

gradle.taskGraph.whenReady {taskGraph ->
    def testRunTask = project.tasks.getByName 'testDebug'
    testRunTask.include(['**/*Test.class'])
    testRunTask.exclude(['**/espresso/**/*.class','**/integration/**/*.class'])
}
Другие вопросы по тегам