2016-07-20 6 views
2

Ich habe dieses Array von Werten, dieAndroid Espresso: Wie füge ich meine eigene Protokollausgabe hinzu, wenn ein Test fehlschlägt?

public static final String[] WRONG_VALUES = {"1000","4000","2000"}; 

In meinem Test falsch betrachtet ich auf dem Bearbeiten von Text am klicken, Einfügen den Text und drücken wieder die Tastatur zu schließen.

onView(withId(R.id.inputField)).perform(click(), replaceText(text), pressBack()); 

und überprüfen dann, ob der Fehler Ansicht

zeigt,
onView(withId(R.id.error)).matches(not(isCompletelyDisplayed())); 

Dies funktioniert, aber ich würde Ausgang irgendwo im Test wie der Wert log, die es für da versagt, wenn der Test, den ich nicht scheitern zu tun nicht wissen welcher Wert getestet wurde Ist das möglich?

Dank

+0

Bitte geben Sie weitere Details zum Problem an, fragen Sie nur, wie Sie einen beliebigen Wert in Android protokollieren können? –

Antwort

3

Sie können die FailureHandler Schnittstelle implementieren für Espresso Umgang mit benutzerdefinierten Versagen zu definieren:

public class CustomFailureHandler implements FailureHandler { 

    private final FailureHandler delegate; 

    public CustomFailureHandler(@NonNull Instrumentation instrumentation) { 
     delegate = new DefaultFailureHandler(instrumentation.getTargetContext()); 
    } 

    @Override 
    public void handle(final Throwable error, final Matcher<View> viewMatcher) {    
     // Log anything you want here 

     // Then delegate the error handling to the default handler which will throw an exception 
     delegate.handle(error, viewMatcher);   
    } 
} 

Bevor die Tests ausgeführt werden, erstellen und den Handler benutzerdefinierte Fehler wie folgt aus:

Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation(); 
Espresso.setFailureHandler(new CustomFailureHandler(instrumentation)); 
Verwandte Themen