2015-01-21 3 views
4

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

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

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

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 теста по отдельности. Я ценю любое предложение.

Addenda:

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

Я не большой специалист в приборостроении испытаний. Но я думаю, что вы можете запустить индивидуальный тест для Espresso даже из студии. Чтобы сделать то же самое с Robolectric, вам нужен еще один плагин с градиентом (я его не использую, поэтому не могу сказать точно) –

ответ

3

Попробуйте с этим андроидом проекта стартера: https://github.com/freezy/android-seed

Он имеет много features:

  • Нагрузка красиво в Android Studio
  • Robolectric тестов рабочим и отладка в IDE (для модульного тестирования)
  • Эспрессы тесты рабочих и отладочные в IDE (для функционального тестирования)
  • Последнего Lollipop Compat ЛИЭС готов к использованию
  • тестового покрытия позволили
+0

Он работает! Спасибо! –

1

я исключил тесты, чтобы добиться того, чего вы хотите.

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']) 
} 
Смежные вопросы