7 settembre Aggiornato 2015
E 'stato incredibilmente frustrante, ma ho avuto Espresso nella libreria di supporto Android per funzionare con successo su Travis CI. Questa è la configurazione esatta che ha funzionato per me. I numeri di versione di sdk e di libreria specifici erano importanti, quindi non cambiarli o ti imbatterai in problemi. Anche la strategia di risoluzione per le annotazioni di supporto era necessaria, quindi non rimuovere neanche quella. Poiché il supporto Android di Travis CI è ancora in beta, questa risposta potrebbe diventare obsoleta. Controllare il sito Web di Travis CI per gli aggiornamenti here.
.travis.yml
language: android
jdk: openjdk7
android:
components:
- build-tools-22.0.1
- android-20
- extra
- addon
- sys-img-armeabi-v7a-android-19
before_script:
- echo no | android create avd --force -n test -t android-19 --abi armeabi-v7a
- emulator -avd test -no-skin -no-audio -no-window &
- android-wait-for-emulator
- adb shell input keyevent 82 &
script:
- ./gradlew connectedAndroidTest
build.gradle
apply plugin: 'android-sdk-manager'
apply plugin: 'com.android.application'
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.3.0'
classpath 'com.jakewharton.sdkmanager:gradle-plugin:0.12.+'
}
}
android {
compileSdkVersion 20
buildToolsVersion "22.0.1"
defaultConfig {
minSdkVersion 11
targetSdkVersion 20
testApplicationId "com.example.app.test"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
packagingOptions {
exclude 'LICENSE.txt'
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
}
lintOptions {
abortOnError false
}
}
dependencies {
compile 'com.actionbarsherlock:actionbarsherlock:[email protected]'
compile 'com.android.support:support-v4:20.+'
compile 'joda-time:joda-time:2.3'
compile 'com.squareup.retrofit:retrofit:1.4.1'
compile 'com.squareup.retrofit:retrofit-converters:1.9.0'
compile 'com.squareup.retrofit:retrofit-mock:1.4.0'
compile 'com.fasterxml.jackson.core:jackson-core:2.3.1'
compile 'com.fasterxml.jackson.core:jackson-annotations:2.3.0'
compile 'com.fasterxml.jackson.core:jackson-databind:2.3.1'
compile 'com.google.guava:guava:16.0'
androidTestCompile 'com.android.support:support-annotations:20.+'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2'
androidTestCompile 'com.android.support.test:runner:0.3'
androidTestCompile 'com.squareup:fest-android:1.0.7'
}
configurations.all {
resolutionStrategy {
// fail eagerly on version conflict (includes transitive dependencies)
// e.g. multiple different versions of the same dependency (group and name are equal)
failOnVersionConflict()
// force certain versions of dependencies (including transitive)
// *append new forced modules:
force 'com.android.support:support-annotations:20.+', 'com.squareup.retrofit:retrofit:1.4.1'
// *replace existing forced modules with new ones:
forcedModules = ['com.android.support:support-annotations:20.+', 'com.squareup.retrofit:retrofit:1.4.1']
// cache dynamic versions for 10 minutes
cacheDynamicVersionsFor 10*60, 'seconds'
// don't cache changing modules at all
cacheChangingModulesFor 0, 'seconds'
}
}
Se si riceve un error come questo:
PerformException: Error performing 'single click' on view
aggiungere questo codice alla prova:
closeSoftKeyboard();
Thread.sleep(1000);
Esempio di progetto
public void testThatSuccessDialogIsShownWithValidCardInput() throws Exception {
onView(withId(R.id.card_number))
.perform(typeText("4242424242424242"));
closeSoftKeyboard();
Thread.sleep(1000);
onView(withId(R.id.card_exp_month))
.perform(typeText("01"));
onView(withId(R.id.card_exp_year))
.perform(typeText("20"));
onView(withId(R.id.card_cvc_code))
.perform(typeText("313"));
closeSoftKeyboard();
Thread.sleep(1000);
onView(withText("Submit"))
.perform(click());
onView(withText("Success!"))
.check(matches(isDisplayed()));
onView(withText("OK"))
.perform(click());
onView(withText("OK"))
.check(doesNotExist());
}
lavoro
https://travis-ci.org/Kurry/Venmo-Android-Coding-Challenge
https://github.com/Kurry/Venmo-Android-Coding-Challenge