2017-01-03 2 views
0

Ich schreibe UI-Automatisierungstests für eine Android-App mit Espresso. Der Test sucht nach einer Barcode-Nummer und sucht den zugehörigen Artikel. Diese Funktion ist jedoch nur für US-Benutzer verfügbar. Der Benutzermarkt wird durch die Gerätesprache (en_US, en_UK) identifiziert.Wie sollte ich beim Schreiben von UI-Automatisierung mit Espresso mit mehreren Märkten umgehen?

Wie kann ich diesen Test schreiben, damit er nicht jedes Mal fehlschlägt, wenn ich die automatisierten Tests für Großbritannien durchführe?

Ich habe dies mit XCTest für die iOS-App erreicht, indem ich eine Methode erstellt habe, die die aktuelle Sprache der Geräte überprüft.

if isUSLocale() { 
    <US specific test> 
} 

die gleiche Testsuite ausführen, ohne Unterschiede durch unsere Anwendungen regional verursacht Ausfälle mit Dies ermöglicht es mir:

class MarketChecker: XCTestCase { 

    func isUSLocale() -> Bool { 
     return Locale.current.identifier == "en_US" 
    } 

    func isGBLocale() -> Bool { 
     return Locale.current.identifier == "en_GB" 
    } 
} 

Das Verfahren wird dann zu Beginn des Tests genannt.

Leider (für mich) Espresso mag keine if Aussagen, so dass ich nicht sicher bin, wie dies für die Android-App zu implementieren. Alle Einsichten würden sehr geschätzt werden!

+0

Welche Programmiersprache ist das? – dazza5000

+0

@ dazza5000 Der Beispielcode ist in Swift. Ich versuche das gleiche zu tun, was ich im Beispielcode getan habe, aber in Java mit dem Espresso-Framework. Espresso erlaubt "versuchen/fangen", aber ich glaube nicht, dass das eine gute Lösung ist. –

Antwort

0

verwaltet, um es herauszufinden. Dies ist nützlich, wenn sich Ihre App in mehreren Märkten befindet, die von der Gerätesprache gesteuert werden.

public static String deviceLocale() { 
    return Locale.getDefault().getCountry(); 
} 

public static boolean isGBLocale() { 
    return deviceLocale().equals("GB"); 
} 

public static boolean isAULocale() { 
    return deviceLocale().equals("AU"); 
} 

public static boolean isUSLocale() { 
    return deviceLocale().equals("US"); 
} 

Dies kann verwendet werden, um marktspezifische Unterschiede zu validieren oder Tests zu überspringen, die sonst auf diesem Markt fehlschlagen würden.

if (isUSLocale()) { 
    // US test 
} 
Verwandte Themen