7

Ho bisogno di automatizzare il mio test dell'interfaccia utente per il successivo funzionamento con il progetto di prova espresso.Test dell'interfaccia utente operazione fotocamera con Espresso

Operation:

clic su un pulsante che apre la mia fotocamera del telefono. Cattura immagine e salva l'immagine nella memoria sdcard. Aggiorna anche una piccola visualizzazione dell'immagine sullo schermo quando hai finito.

L'app funziona bene ma con tutte le altre operazioni e il tipo simile di operazione precedente diventa un processo che richiede tempo per testarlo manualmente ancora e ancora.

+0

Con Espresso solamente possibile verificare le attività all'interno della vostra applicazione. L'app Fotocamera non può essere strumentata. Prova invece UI Automator: http://developer.android.com/tools/testing/testing_ui.html – haffax

risposta

2

Se è ancora necessario, è possibile utilizzare il nuovo Espresso-Intent che prende in giro il risultato dell'attività che è possibile utilizzare per testare questo flusso. See the sample from Android Testing

+2

Solo una correzione, il link corretto è ora https://github.com/googlesamples/android-testing/tree/master/ ui/espresso/IntentsBasicSample – Thalescm

+0

@Thalescm grazie per l'aggiornamento! – Yenchi

6

stavo lavorando con problemi simili ed ho trovato migliore soluzione disponibile al di sotto del collegamento Camera UI test

// CameraActivityInstrumentationTest.java 
public class CameraActivityInstrumentationTest { 

    // IntentsTestRule is an extension of ActivityTestRule. IntentsTestRule sets up Espresso-Intents 
    // before each Test is executed to allow stubbing and validation of intents. 
    @Rule 
    public IntentsTestRule<CameraActivity> intentsRule = new IntentsTestRule<>(CameraActivity.class); 

    @Test 
    public void validateCameraScenario() { 
     // Create a bitmap we can use for our simulated camera image 
     Bitmap icon = BitmapFactory.decodeResource(
       InstrumentationRegistry.getTargetContext().getResources(), 
       R.mipmap.ic_launcher); 

     // Build a result to return from the Camera app 
     Intent resultData = new Intent(); 
     resultData.putExtra("data", icon); 
     Instrumentation.ActivityResult result = new Instrumentation.ActivityResult(Activity.RESULT_OK, resultData); 

     // Stub out the Camera. When an intent is sent to the Camera, this tells Espresso to respond 
     // with the ActivityResult we just created 
     intending(toPackage("com.android.camera2")).respondWith(result); 

     // Now that we have the stub in place, click on the button in our app that launches into the Camera 
     onView(withId(R.id.btnTakePicture)).perform(click()); 

     // We can also validate that an intent resolving to the "camera" activity has been sent out by our app 
     intended(toPackage("com.android.camera2")); 

     // ... additional test steps and validation ... 
    } 
} 
+0

Alcuni dispositivi, come SAMSUNG Galaxy S8, hanno il nome del pacchetto "com.sec.android.app.camera" della sua app fotocamera. Questa soluzione non funziona in quel dispositivo vero? –