2016-03-21 15 views
1

Ich habe einigen Bildschirm, der auf großen Bildschirmen Split-Screen, sondern einzigen Bildschirm in kleinen Bildschirmen, wie hier beschrieben: http://developer.android.com/training/basics/fragments/fragment-ui.htmlAndroid Instrumentation-Test für mehr Bildschirmgrößen/Layout

Ich versuche, einen Testfall zu schreiben, Läuft alle Funktionen meiner Anwendung, und ich habe alle Netzwerkaufrufe verspottet und so weiter.

Die einzige verbleibende Frage, die ich kenne, ist, ob es eine richtige Möglichkeit gibt, die verschiedenen Layouts zu testen.

Gerade jetzt, ich müsste manuell mit den Konfigurationen Ich möchte testen, und ich habe Anrufe in diesem Format den Testfall auf verschiedenen AVD auszuführen:

if(uiDevice.getDisplaySizeDp().x < 600) { 
    // we are using the standard layout, so the fragment was opened on top of the stack, instead of side-by-side 
    // press Back to get back to the list of objects 
    pressBack(); 
} 

Ich bin mit Espresso-Tests mit AndroidJUnit4 und android.support.test.runner.AndroidJUnitRunner.

Die Frage ist: Gibt es einen Standard/dokumentiert Methode, die ich mit meinem Team teilen die verschiedenen Layout-Qualifikation zu behandeln: sw600dp, w900dp, landscape, und so weiter.

Gibt es alternativ eine Möglichkeit anzugeben, welche Testfälle für ein Gerät ausgeführt werden sollen, das den Qualifiern entspricht?

aktualisiert basierend auf drfrag01 Antwort:

Ich glaube, ich bin mehr für etwas, das automatisch auf dem Gerät der Testfälle zu laufen, sobald der Läufer startet möglicherweise in der Lage zu holen. Mein bestes Szenario wäre wahrscheinlich etwas, wo ich Annotationen @ SW600 oder @Normal hinzufüge, und wenn dann der Test auf dem Gerät läuft, werden die @ SW600 für ein kleines Telefon übersprungen, anstatt dass ich alle Suites aufstelle.

Es sieht so aus, als ob dies nicht möglich wäre, ohne einen benutzerdefinierten Test Runner.

Antwort

2

Ich verwende die folgende -

/** 
* Determine if the device is a tablet (i.e. it has a large screen). 
* 
* @param context The calling context. 
*/ 

public static boolean isTablet(Context context) { 
    return (context.getResources().getConfiguration().screenLayout 
      & Configuration.SCREENLAYOUT_SIZE_MASK) 
      >= Configuration.SCREENLAYOUT_SIZE_LARGE; 
} 


/** 
* Determine if the device is in landscape or portrait mode. Returns true for portrait, and false 
* for landscape. 
*/ 
public static boolean isPortrait(Context context) { 
    return context.getResources().getConfiguration().screenHeightDp > context.getResources().getConfiguration().screenWidthDp; 
} 

Sie können Testfälle filtern, die durch

  1. Organizing them in Suites and running the suites.

Für Beispiel

./gradlew -Pandroid ausgeführt werden müssen .testInstrumentationRunnerArguments.class = com.mycompany.foo.tes t.Suites.PortraitFriendlyTestSuite connectedAndroidTest --info

  1. Annotating them with for example "@TabletTest" or "@PortraitOnly" and filtering them in a test run.

Für Beispiel

./gradlew -Pandroid.testInstrumentationRunnerArguments.annotation = com.mycompany.foo .Annotations.PortraitOnly connectedAndroidTest --info

+0

Danke, dass Sie sich die Zeit nehmen zu antworten und diese Links zur Verfügung zu stellen. Bitte sehen Sie den Update-Block, wenn Sie Zeit haben. –