@Test
public void test3_PaySuccessful(){
init();
ViewInteraction amountEditText = onView(
allOf(withId(R.id.et_amount), isDisplayed()));
amountEditText.perform(replaceText("SGD 0.010"), closeSoftKeyboard());
//, withText("Proceed")
ViewInteraction appCompatButton = onView(
allOf(withId(R.id.btn_confirm), isDisplayed()));
appCompatButton.perform(click());
//, withText("Pay")
ViewInteraction appCompatButton2 = onView(
allOf(withId(R.id.btn_confirm), isDisplayed()));
appCompatButton2.perform(click());
//dialog
ViewInteraction appCompatButton3 = onView(
allOf(withId(R.id.confirm_button), withText("Confirm"), isDisplayed()));
appCompatButton3.perform(click());
//have to disable animation in order to pass this.
intended(CoreMatchers.allOf(hasComponent(PaymentSelectionActivity2.class.getName())));
}
Ich habe ein Problem beim Durchführen von Espresso-Tests mit einer Animation mit Animationen festgestellt. Ich weiß, dass Espresso keine Animationen verarbeiten kann. Ich habe es im Folgenden getan funktioniert nicht) - dann habe ich versucht, ein Flag in meinem Code einzufügen, zB. espresso_testing = true Wenn dies der Fall ist, überspringt mein Code den Aufruf aller startAnimation () - Funktionsaufrufe. ---> das funktioniert. Es besteht jedoch die Anforderung, dass ich beim Schreiben von Espresso-Testfällen keinen Code in meiner App ändern kann. Ein Testfall oben enthalten.
Gibt es eine andere Möglichkeit, dies zu tun? Danke im Voraus.
Stelle sicher, dass dein Plugin auf dem neuesten Stand ist:
buildscript {
repositories {
google()
gradlePluginPortal()
}
dependencies {
classpath 'com.Android.tools.build:gradle:3.3.0'
}
}
Verwenden Sie das neue Flag in testOptions
mit dem Namen animationsDisabled
:
Android {
...
testOptions {
animationsDisabled = true
}
}
Sie können versuchen, Animationen auf Ihrem Gerät/Emulator manuell zu deaktivieren:
Um Flockigkeit zu vermeiden, empfehlen wir dringend, das System auszuschalten Animationen auf den virtuellen oder physischen Geräten, die zum Testen verwendet werden. Auf Deaktivieren Sie auf Ihrem Gerät unter Einstellungen> Entwickleroptionen die folgenden Optionen 3 Einstellungen:
Fensteranimationsskala Übergangsanimationsskala Animatordauer Rahmen
Source:https://developer.Android.com/training/testing/espresso/setup#set-up-environment
Sie können versuchen, adb
über die Befehlszeile zu verwenden:
# Turn off animations
adb Shell settings put global window_animation_scale 0 &
adb Shell settings put global transition_animation_scale 0 &
adb Shell settings put global animator_duration_scale 0 &
Source:https://github.com/jaredsburrows/Android-gif-example/blob/master/.travis.yml#L34
Sie können die TestButler
von LinkedIn ausprobieren:
TestButler.verifyAnimationsDisabled(InstrumentationRegistry.getTargetContext());
Sie können versuchen, eine TestRule
- und Gradle
-Aufgabe für Ihre Espresso-Tests zu erstellen:
Source:https://product.reverb.com/disabling-animations-in-espresso-for-Android-testing-de17f7cf236f
Sie sollten zwar keinen Testcode im Produktionscode hinzufügen. Das Problem liegt hier in der Animation. Wenn Sie Animationen mit Handlers
und Runnables
ausführen, können Sie sie nicht mit den Entwickleroptionen deaktivieren. Ein üblicher Ort, an dem wir dies zum Animieren verwenden, ist in benutzerdefinierten Ansichten.
Stellen Sie jedoch auch in benutzerdefinierten Ansichten sicher, dass Sie entweder ValueAnimator
, ObjectAnimator
oder AnimatorSet
verwenden, um Ihre Animation auszuführen. Nur dann können Sie Animationen deaktivieren, indem Sie Animator duration scale
in den Entwickleroptionen deaktivieren.
Eine gute Referenz ist ProgressBar
.
Sie könnten einen Blick auf dieses Repo werfen.
Erstellen Sie das Projekt, laden Sie die generierte .apk-Datei herunter und folgen Sie den Anweisungen in diesem Projekt, um die Animationen zu deaktivieren. Anschließend sollten Sie ein reibungsloses Segeln durchführen. Sie können die gleiche .apk-Datei auch von vielen anderen Quellen herunterladen. Wenn Sie die .apk-Datei haben, geben Sie die folgenden Befehle ein:
adb install -r Android_emulator_hacks.apk
adb Shell pm grant no.finn.Android_emulator_hacks Android.permission.SET_ANIMATION_SCALE
adb Shell am start -n no.finn.Android_emulator_hacks/no.finn.Android_emulator_hacks.HackActivity
Dadurch werden die Systemanimationen für Sie deaktiviert.