2017-01-17 3 views
2

Ich suchte diese Frage, fand aber keine Antworten.Wie Instrumentierung-Test android system apps

Angenommen, es gibt eine System-App, die zusammen mit Android-System, z. Dialer App

Jetzt möchte ich Unit-Test oder Instrumentierung-Test diese App. Ich möchte AOSP Android.mk nicht verwenden. Gibt es alternative Wege? z.B. Kann ich ein Testprojekt erstellen, um es zu testen?

Antwort

0

Sie können the UiAutomator system verwenden, um beliebige Anwendungen zu testen, einschließlich Systemanwendungen. Die Ein- und Ausgänge sind jedoch etwas eingeschränkt.

1

Für Instrumentierung Tests erstelle ich persönlich eine unabhängige Anwendung, die uiautomator verbraucht: https://developer.android.com/topic/libraries/testing-support-library/index.html#UIAutomator

Dies ermöglicht die Simulation eines Benutzers:

@org.junit.Test 
public void testCheckContact() throws InterruptedException { 
    UiDevice device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()); 
    assertThat(device, notNullValue()); 
    device.pressHome(); 

    Context context = InstrumentationRegistry.getInstrumentation().getContext(); 
    Intent intent = context.getPackageManager().getLaunchIntentForPackage("systempackageName"); 
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 
    context.startActivity(intent); 

    ... 
    ... 

    PhoneActivityPage phoneActivityPage = new PhoneActivityPage(); 
    phoneActivityPage.clickContacts(); 

    assertEquals("Contacts", phoneActivityPage.getSelectedTab()); 
} 

Wo Sie innerhalb dieser PhoneActivityPage und die Schnittstelle in einer separaten Klasse definieren unabhängiges Testprojekt

Ich hoffe, das hilft.

+0

Danke @ abstractx1, das ist, was ich recherchiere, wird später aktualisieren – wxi

+0

Es funktioniert. Damit habe ich eine Handy-App gezeigt und dann auf Wähltastatur geklickt. – wxi

+0

@wxi: Brilliant! Froh, dass es für dich arbeitet. – abstractx1