Robotium Tutorial: Android Framework di test con esempio

โšก Riepilogo intelligente

Robotium รจ un open source Android framework di automazione dei test che gestisce app native e ibride attraverso la loro interfaccia utente, consentendo a un tester di creare script per scenari funzionali, di sistema e di accettazione che coprono diversi Android attivitร .

  • ๐Ÿ”˜ Corso base: Solo espone i metodi di clic, ricerca, trascinamento e asserzione che ogni Robotium chiamate ai casi di test.
  • โ˜‘๏ธ Compatibile con la scatola nera: I test si collegano ai componenti dell'interfaccia utente in fase di esecuzione, quindi รจ richiesta una conoscenza minima del codice sorgente dell'applicazione.
  • โœ… Procedura in quattro fasi: Definisci le specifiche del test, scrivi il programma di test, eseguilo su un dispositivo e infine raccogli i risultati.
  • ๐Ÿงช Esempio pratico: Un saluto completoAndroidLa classe di test verifica il testo visibile, l'attivitร  corrente e il pulsante Avvia.
  • ๏ธ Due modalitร  di funzionamento: Avvia i test dall'IDE o da un terminale con il comando adb shell am instrument.
  • โš™๏ธ Stato attuale: Robotium La versione 5.6.3 rimane l'ultima release, quindi la nuova Android i progetti di solito lo abbinano o lo sostituiscono con Espresso.

Robotium Tutorial

Cosa รจ Robotium?

Robotium is an Android Framework di test che automatizza i casi di test per applicazioni native e ibride. Robotium, uno sviluppatore puรฒ creare robusti casi di test GUI automatizzati per Android applicazioni. Uno sviluppatore puรฒ anche scrivere scenari di test funzionali, di sistema e di accettazione che si estendono su diverse Android attivitร .

Robotium Quadro di prova

Lo standard Android Il framework di test presenta le limitazioni elencate di seguito.

  • Impossibile gestire piรน attivitร 
  • Le prestazioni di esecuzione del test sono lente
  • I casi di test sono complessi e difficili da implementare

Migliori Robotium il framework รจ la scelta migliore per condurre test su un Android applicazione.

Robotium รจ un framework open-source ed รจ considerato un'estensione del Android framework di test. Utilizzo Robotium, uno sviluppatore puรฒ creare robusti casi di test GUI automatizzati per Android applicazioni. Inoltre, uno sviluppatore puรฒ scrivere scenari di test funzionali, di sistema e di accettazione che si estendono su piรน Android attivitร .

La tabella seguente riassume le caratteristiche avanzate che separano Robotium dal quadro di riferimento della strumentazione semplice.

Funzionalitร  avanzate di Robotium rispetto allo standard Android quadro strumentale

Funzionalitร  avanzate di Robotium

Robotium Classi dei casi di test

Robotium spedisce un piccolo set di classi per i test e l'esempio dell'articolo importa il legacy com.jayway.android.robotium.solo pacchetto. Queste classi supportano casi di test che si estendono su piรน attivitร  e Solo รจ integrato con ActivityInstrumentationTestCase2.

Nota: corrente Robotium le release espongono la stessa classe sotto il formato piรน breve com.robotium.solo pacchetto, mentre la coordinata Maven รจ rimasta com.jayway.android.robotium:robotium-soloRegola l'importazione in modo che corrisponda alla versione del file JAR che aggiungi effettivamente al progetto.

Il diagramma seguente mostra come la classe Solo si posiziona sopra il caso di test della strumentazione.

Classe Solo integrata con ActivityInstrumentationTestCase2 in un Robotium caso di prova

Integrazione di Robotium e ActivityInstrumentationTestCase2

Un tester puรฒ scrivere casi di test senza conoscere la progettazione dell'applicazione, il che rende l'approccio una forma di test della scatola neraQuesto รจ un vantaggio eccezionale rispetto al semplice Android classi di casi di test.

Istruzioni per lโ€™uso: Robotium

Per utilizzare Robotium nella vostra Android Per testare il progetto, รจ necessario seguire i passaggi seguenti.

Passaggi necessari per aggiungere e utilizzare Robotium dentro un Android progetto di prova

Come si usa Robotium

Per garantire la qualitร  del tuo Android Per la candidatura, seguire la procedura in quattro fasi descritta di seguito.

  • Progettare le specifiche del test
  • Sviluppare il programma di test
  • Eseguire il caso di test sul dispositivo di destinazione.
  • Raccogli il risultato del test

Il diagramma di flusso sottostante illustra in ordine le quattro fasi.

Diagramma di flusso delle quattro fasi Android procedura di test dell'applicazione

Android procedura di test dell'applicazione

FASE 1) Progettazione delle specifiche di prova

Questo รจ il primo passo per testare la tua applicazione. In questo passaggio definisci l'obiettivo da testare. Android Un'applicazione ha molti elementi da testare, come l'interfaccia utente, le attivitร , i componenti e i servizi. Definire chiaramente gli elementi da testare aiuta a ottenere un'ampia copertura dei test.

  • Pianifica le tipologie di test da eseguire (test unitario, test funzionale, test di sistema).
  • Progetta ciascuno caso di prova per la massima copertura mantenendoping Il numero di casi di test รจ ridotto. Maggiore รจ la quantitร  di codice testato, maggiore รจ la probabilitร  di individuare tempestivamente i bug.

FASE 2) Scrivere il programma di test

Questa sezione ti guida attraverso la scrittura di un Android programma di prova utilizzando Android JUnit test e Robotium. Supponiamo che tu abbia giร  sviluppato un Android programma chiamato HelloAndroidQuesto programma possiede le funzioni descritte di seguito.

  • Visualizza sullo schermo il testo "Ciao mondo!".
  • Mostra un CiaoAndroid messaggio visualizzato quando l'utente preme il pulsante "Avvia".

Lo screenshot qui sotto mostra l'applicazione in fase di test in esecuzione su un dispositivo.

CiaoAndroid Applicazione in fase di test che mostra il testo "Hello world" e il pulsante "Start".

CiaoAndroid applicazione

Requisiti di sistema

  • Migliori Android la piattaforma viene fornita con un sistema pre-integrato JUnit 3 struttura, che รจ ciรฒ che ActivityInstrumentationTestCase2 si basa su.
  • Per creare un Android progetto di prova da Eclipse, la tua macchina ha bisogno di un funzionamento Android Installazione dell'SDK.
  • Installare l'attuale Android SDK della piattaforma anzichรฉ una versione precedente bloccata.

Gli screenshot in questa guida utilizzano Eclipse con il plugin ADT, che era la toolchain standard quando l'esempio รจ stato scritto. Eclipse ADT non รจ piรน supportato, quindi su una macchina moderna dovresti scarica Android Studio invece e riutilizzare lo stesso codice di test all'interno di un Gradle modulo.

Per la Robotium framework di test, scarica il Robotium biblioteca dalla Robotium pagina del progetto.

Creare un Android Progetto di test

  • Fare clic su File -> Nuovo -> Altro
  • Scegli Android -> Android Prova il progetto come mostrato nella figura sottostante, quindi scegli Avanti

Eclipse Nuovo progetto guidato con Android Progetto di prova selezionato

Crea un nuovo Android progetto di prova

Scrivi il nome del tuo progetto di test. Secondo la convenzione di denominazione, il progetto di test dovrebbe chiamarsi "HelloAndroidTest".

Eclipse dialogo con il progetto di test denominato HelloAndroidTest che segue la convenzione di denominazione

Aggiungi il nome del progetto di test in base alla convenzione di denominazione

Scegli l'applicazione di destinazione da testare. In questo caso รจ HelloAndroidquindi fare clic su Fine.

Eclipse passaggio della procedura guidata selezionando CiaoAndroid come applicazione di destinazione in fase di test

Selezionare l'applicazione di destinazione da testare

Crea suite di test

In base alle specifiche del test, ora crei le suite di test per il tuo programma di test. Puoi scegliere tra diverse opzioni. test del software framework. Questo tutorial utilizza lo standard Android struttura di test ActivityInstrumentationTestCase2. Per testare con Robotium, Aggiungi il Robotium file di libreria a libs directory all'interno della cartella del tuo progetto.

Un caso di test definisce il fixture utilizzato per eseguire piรน test. Per definire un caso di test, seguire la struttura del programma riportata di seguito.

  • Implementare una sottoclasse di TestCase.
  • Definisci variabili di istanza che memorizzano lo stato del dispositivo.
  • Inizializza lo stato del dispositivo sovrascrivendo il metodo setUp().
  • Eseguire la pulizia dopo un test sovrascrivendo tearDown().

Il diagramma sottostante mappa tale struttura sul programma di test che stai per scrivere.

Struttura di a Robotium Programma di test che mostra la configurazione, i metodi di test e la procedura di smontaggio.

Struttura del programma di test

package com.example.helloandroid.test;

import com.example.helloandroid.HelloAndroid;
import com.jayway.android.robotium.solo.Solo;
import android.test.ActivityInstrumentationTestCase2;
import android.widget.TextView;

public class HelloAndroidTest extends ActivityInstrumentationTestCase2 <HelloAndroid> {
    
	private HelloAndroid mActivity;
	private TextView mView;
	private String resourceString;
	private Solo solo;
	
	public HelloAndroidTest () {
		// TODO Auto-generated constructor stub
		super("com.example.helloandroid",HelloAndroid.class);	
	}
	
	 @Override
	protected void setUp() throws Exception {
		// TODO Auto-generated method stub
	//	super.setUp();
		 
	 	mActivity = this.getActivity();
		solo = new Solo(getInstrumentation(),getActivity());
		mView = (TextView) mActivity.findViewById(com.example.helloandroid.R.id.textview2);
		resourceString = mActivity.getString(com.example.helloandroid.R.string.hello_world);
		
	}
	 
	 @Override
	protected void tearDown() throws Exception {
		// TODO Auto-generated method stub
		//super.tearDown();
		solo.finishOpenedActivities();
	}
	
	public void testPrecondition() {
		assertNotNull(mView);
	}
	
	/* test Target application contains a text display "Hello World!"*/
	public void testSearchText() {
		assertEquals(resourceString,(String) mView.getText());
	}
	
	/* test HelloAndroid Activity on target application is exist*/
	public void testCurrentActivity() throws Exception  {
    	solo.assertCurrentActivity("wrong activity", HelloAndroid.class);
    }
    
	/* test Application UI contains "Start" button */
	/* send event click button to target application */
    public void testSearchButton() throws Exception {
    	boolean found = solo.searchButton("Start");
    	solo.clickOnButton("Start");
    	assertTrue(found);
    }

	

}

Aggiunta di casi di test

  • Nello stesso pacchetto della suite di test, creare le classi TestCase.
  • Per testare una determinata attivitร , ad esempio CiaoAndroid, creare un caso di test che estende ActivityInstrumentationTestCase2Android>.
  • All'interno di quella classe, il tester ottiene l'attivitร  da testare tramite il metodo getActivity().
  • Crea liberamente un test per l'attivitร  aggiungendo un metodo denominato "test + nome del metodo originale".
  • All'interno del metodo di test, il tester puรฒ utilizzare Android JUnit Funzioni per confrontare il valore effettivo con il valore atteso. Questi metodi sono illustrati di seguito.

La tabella seguente elenca i metodi di asserzione e interazione piรน frequentemente utilizzati nei due framework.

Esempi di metodi del Robotium Classe solista e la Android struttura di test

Esempi di metodi di Robotium e Android struttura di test

La suite di test sopra riportata verifica che l'interfaccia grafica dell'applicazione visualizzi il testo "Hello World!" e contenga un pulsante denominato "Start".

PASSO 3) Eseguire il test

Dopo aver terminato di scrivere il programma di test, eseguilo seguendo i passaggi descritti di seguito.

  • Connetti un Android Collega il dispositivo al tuo PC oppure avvia un emulatore se non hai a disposizione un dispositivo reale.
  • Nel tuo IDE, fai clic con il pulsante destro del mouse sul progetto di test e scegli Esegui come โ†’ Android Test unitario.

Lo screenshot qui sotto mostra l'avvio dell'esecuzione del test dall'IDE.

Lancio del Robotium programma di test come Android Test unitario dall'IDE

Esecuzione del programma di test

Oltre a eseguire il test dall'IDE, รจ possibile eseguirlo dalla riga di comando. In questo programma di test il pacchetto di test รจ com.example.helloandroid.testIn un terminale Linux, utilizzare il seguente comando per eseguire tutti i test presenti in quel pacchetto.

$ adb shell am instrument -w -e package com.example.helloandroid.test

FASE 4) Ottenere il risultato del test

Al termine dell'esecuzione del test, si raccolgono i risultati.

In questo programma di test vengono eseguiti quattro metodi di test. Nell'esecuzione riportata di seguito, tutti i casi di test sono stati superati.

Risultato del test visualizzato tutti e quattro Robotium casi di test superati

Output dei risultati del test quando tutti i casi di test superano il test

Se un caso di test fallisce, viene visualizzato l'output che mostra quali casi di test non sono andati a buon fine.

output dei risultati del test elenca il Robotium casi di test falliti

Output dei risultati del test quando un caso di test fallisce

Fonte Code Esempi

Questo articolo include esempi di codice sorgente che ti aiuteranno a seguire il tutorial in modo piรน chiaro e ad apprendere rapidamente i dettagli tecnici.

Se vuoi confrontare Robotium con le altre opzioni in questo spazio, vedere il test di applicazioni mobili guida, la Appium lezione e la raccolta di strumenti di test delle app mobili.

DOMANDE FREQUENTI

Robotium La versione 5.6.3 rimane l'ultima release pubblicata e lo sviluppo attivo si รจ interrotto anni fa. Il framework รจ ancora in esecuzione e l'artefatto รจ ancora presente su Maven Central, ma รจ disponibile una nuova versione. Android i progetti normalmente scelgono Espresso, quale Google mantiene.

Robotium รˆ un framework black-box che si collega ai widget in fase di esecuzione e richiede poca conoscenza del codice sorgente. Espresso is GoogleStrumento white-box che si sincronizza con il thread dell'interfaccia utente e richiede l'accesso al codice dell'applicazione.

Robotium gestisce un'applicazione alla volta, non รจ in grado di gestire in modo affidabile Flash o contenuti web al di fuori di una WebView, non offre alcuna registrazione integrata nel JAR open-source e la sua dipendenza da classi di strumentazione obsolete complica la moderna Gradle costruisce.

Dichiarare androidTestImplementation 'com.jayway.android.robotium:robotium-solo:5.6.3' nel file di compilazione del modulo, oppure rilasciare il robotium-solo JAR ai miglioramenti libs e farvi riferimento come dipendenza di un file.

Sรฌ. Le serrature scorrevoli portatili e i catenacci a superficie possono essere usati per mettere in sicurezza una porta a scomparsa dall'esterno. Alcuni kit con catena di sicurezza consentono anche il bloccaggio esterno con chiave o manopola girevole. Robotium I test sono normali test di strumentazione, quindi lo stesso APK viene eseguito su un emulatore o su un dispositivo fisico. Per i controlli di gesti, sensori e prestazioni รจ preferibile utilizzare hardware reale, poichรฉ i tempi di risposta dell'emulatore possono variare.

Robotium si adatta agli scenari di accettazione funzionale, di sistema e dell'utente a livello di interfaccia utente. Non sostituisce i test unitari, che vengono eseguiti piรน velocemente sulla JVM, nรฉ quelli piรน ampi. tipi di test del software รจ ancora necessario un rilascio.

L'apprendimento automatico viene utilizzato per localizzatori auto-riparanti che sopravvivono ai cambiamenti di layout, per confronti visivi che segnalano regressioni di rendering e per il rilevamento di test instabili che classificano le riesecuzioni. Gli strumenti riducono la manutenzione, ma รจ comunque un essere umano a decidere quale comportamento รจ rilevante.

Copilota GitHub puรฒ generare i metodi di configurazione, pulizia e asserzione di Solo da una classe di attivitร . RevEsamina attentamente il suggerimento, perchรฉ potrebbe generare importazioni di pacchetti obsoleti o asserzioni che l'app non soddisfa mai.

Riassumi questo post con: