Robotium Opplæringen: Android Testrammeverk med eksempel

⚡ Smart oppsummering

Robotium er en åpen kildekode Android testautomatiseringsrammeverk som driver native og hybride apper gjennom brukergrensesnittet, slik at et testerskript kan fungere, system- og akseptscenarier som spenner over flere Android aktiviteter.

  • 🔘 Kjerneklasse: Solo avslører klikk-, søk-, dra- og påstandsmetodene som alle Robotium testcase-kall.
  • ☑️ Svartboksvennlig: Tester binder seg til UI-komponenter under kjøretid, så minimal kunnskap om applikasjonskilden er nødvendig.
  • Firetrinnsprosedyre: Design testspesifikasjonen, skriv testprogrammet, kjør det på en enhet, og samle deretter inn resultatet.
  • 🧪 Utarbeidet eksempel: Et komplett heiAndroidTestklassen sjekker den synlige teksten, gjeldende aktivitet og Start-knappen.
  • 🛠️ To kjøremoduser: Start tester fra IDE-en eller fra en terminal med adb shell am instrument-kommandoen.
  • ⚙️ Nåværende status: Robotium 5.6.3 er fortsatt den siste utgivelsen, så ny Android prosjekter kobler det vanligvis sammen eller erstatter det med Espresso.

Robotium Opplæringen

Hva er Robotium?

Robotium er en Android testrammeverk som automatiserer testtilfeller for native og hybride applikasjoner. Bruk Robotium, kan en utvikler lage robuste automatiserte GUI-testtilfeller for Android applikasjoner. En utvikler kan også skrive funksjonelle, system- og aksepttestscenarier som strekker seg over flere Android aktiviteter.

Robotium Testramme

Standard Android Testrammeverket har begrensningene som er oppført nedenfor.

  • Kan ikke håndtere flere aktiviteter
  • Testkjøringsytelsen er treg
  • Testtilfeller er komplekse og vanskelige å implementere

Ocuco Robotium rammeverket er det bedre valget for å utføre testing på en Android søknad.

Robotium er et rammeverk med åpen kildekode og regnes som en utvidelse av Android testrammeverk. Bruker Robotium, kan en utvikler lage robuste automatiserte GUI-testtilfeller for Android applikasjoner. Dessuten kan en utvikler skrive funksjonelle, system- og aksepttestscenarier som strekker seg over flere Android aktiviteter.

Tabellen nedenfor oppsummerer de avanserte funksjonene som skiller Robotium fra det enkle instrumenteringsrammeverket.

Avanserte funksjoner i Robotium sammenlignet med standarden Android instrumenteringsramme

Avanserte funksjoner i Robotium

Robotium Test Case-klasser

Robotium sender et lite sett med klasser for testing, og artikkelens eksempel importerer de eldre com.jayway.android.robotium.solo pakke. Disse klassene støtter testtilfeller som strekker seg over flere aktiviteter, og Solo er integrert med ActivityInstrumentationTestCase2.

OBS: nåværende Robotium utgivelser eksponerer den samme klassen under den kortere com.robotium.solo pakke, mens Maven-koordinaten ble værende com.jayway.android.robotium:robotium-soloJuster importen slik at den samsvarer med JAR-versjonen du faktisk legger til i prosjektet.

Diagrammet nedenfor viser hvordan Solo-klassen plasseres oppå instrumenttesttilfellet.

Soloklasse integrert med ActivityInstrumentationTestCase2 i en Robotium testforsøk

Integrasjon av Robotium og AktivitetsinstrumenteringTestCase2

En tester kan skrive testtilfeller uten kjennskap til applikasjonsdesign, noe som gjør tilnærmingen til en form for svart boks testingDet er en enestående fordel sammenlignet med vanlig Android test case klasser.

Hvordan bruke Robotium

Å bruke Robotium i Android testprosjektet, må du følge trinnene nedenfor.

Trinn som kreves for å legge til og bruke Robotium inne i en Android testprosjekt

Bruksanvisning Robotium

For å garantere kvaliteten på din Android søknaden, følg firetrinnsprosedyren nedenfor.

  • Utform testspesifikasjonen
  • Utvikle testprogrammet
  • Kjør testtilfellet på målenheten
  • Samle inn testresultatet

Flytskjemaet nedenfor plasserer de fire trinnene i rekkefølge.

Flytskjema for firetrinnssystemet Android prosedyre for applikasjonstesting

Android prosedyre for applikasjonstesting

TRINN 1) Spesifikasjon for designtest

Dette er det første trinnet i testing av applikasjonen din. I dette trinnet definerer du målet som skal testes. Android Applikasjonen har mange mål som må testes, for eksempel brukergrensesnitt, aktiviteter, komponenter og tjenester. Å definere målet tydelig hjelper deg med å oppnå bred testdekning.

  • Planlegg testtypene som skal utføres (enhetstest, funksjonstest, systemtest).
  • Design hver testforsøk for maksimal dekning mens du holderping antallet testtilfeller er lite. Jo mer kode du tester, desto større er sjansen for tidlig feildeteksjon.

TRINN 2) Skriv testprogram

Denne delen veileder deg gjennom å skrive en Android testprogram ved hjelp av Android JUnit tester og RobotiumAnta at du allerede har utviklet en Android program som heter HalloAndroidDette programmet har funksjonene som er beskrevet nedenfor.

  • Vis teksten «Hallo verden!» på skjermen.
  • Vis en heiAndroid melding når brukeren trykker på «Start»-knappen.

Skjermbildet nedenfor viser applikasjonen under test som kjører på en enhet.

HalloAndroid applikasjon under test som viser Hello world-teksten og Start-knappen

HalloAndroid søknad

Systemkrav

  • Ocuco Android plattformen leveres med en forhåndsintegrert JUnit 3 rammeverk, som er hva ActivityInstrumentationTestCase2 bygger på.
  • Å lage en Android testprosjekt fra Eclipse, maskinen din trenger en fungerende Android SDK-installasjon.
  • Installer den nåværende Android plattform-SDK i stedet for en festet eldre utgivelse.

Skjermbildene i denne gjennomgangen bruker Eclipse med ADT-pluginen, som var standard verktøykjede da eksemplet ble skrevet. Eclipse ADT støttes ikke lenger, så på en moderne maskin ville du gjort det nedlasting Android Studio i stedet og gjenbruk den samme testkoden inne i en Gradle modul.

For det Robotium testrammeverk, last ned Robotium biblioteket fra Robotium Prosjektet siden.

Lag en Android Testprosjekt

  • Klikk Fil -> Ny -> Annet
  • Velg Android -> Android Testprosjektet som vist i figuren nedenfor, og velg deretter Neste

Eclipse Ny prosjektveiviser med Android Testprosjekt valgt

Lage en ny Android testprosjekt

Skriv navnet på testprosjektet ditt. I henhold til navnekonvensjonen skal testprosjektet hete «HalloAndroidTest".

Eclipse dialog med testprosjektet kalt HalloAndroidTest etter navnekonvensjonen

Legg til testprosjektnavnet basert på navnekonvensjonen

Velg målapplikasjonen som testes. I dette tilfellet er det HalloAndroid, og klikk deretter på Fullfør.

Eclipse veivisertrinn som velger HalloAndroid som målapplikasjonen under testing

Velg målapplikasjonen som testes

Opprett testsuiter

Basert på testspesifikasjonen din, oppretter du nå testpakker for testprogrammet ditt. Du kan velge mellom forskjellige programvaretesting rammeverk. Denne veiledningen bruker standarden Android testramme ActivityInstrumentationTestCase2Å teste med Robotium, Legg til Robotium bibliotekfil til en libs katalogen i prosjektmappen din.

Et testtilfelle definerer fixturen som brukes til å kjøre flere tester. For å definere et testtilfelle, følg programstrukturen nedenfor.

  • Implementer en underklasse av TestCase.
  • Definer instansvariabler som lagrer tilstanden til fixturen.
  • Initialiser fiksturens tilstand ved å overstyre setUp().
  • Rydd opp etter en test ved å overstyre tearDown().

Diagrammet nedenfor kartlegger den strukturen på testprogrammet du skal skrive.

Strukturen til en Robotium testprogram som viser oppsett, testmetoder og nedbrytning

Strukturen til testprogrammet

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);
    }

	

}

Legger til testtilfeller

  • Opprett TestCase-klassene i samme pakke som testsuiten.
  • For å teste en bestemt aktivitet, for eksempel HalloAndroid, opprett en testcase som utvider ActivityInstrumentationTestCase2Android>.
  • Inne i den klassen henter testeren aktiviteten som testes gjennom getActivity()-metoden.
  • Lag en test for aktiviteten fritt ved å legge til en metode kalt «test + originalt metodenavn».
  • Inne i testmetoden kan testeren bruke Android JUnit funksjoner for å sammenligne den faktiske verdien med den forventede verdien. Disse metodene vises nedenfor.

Tabellen nedenfor viser de mest brukte påstands- og interaksjonsmetodene i de to rammeverkene.

Eksempelmetoder for Robotium Soloklasse og Android testramme

Eksempelmetoder for Robotium og Android testramme

Testpakken ovenfor bekrefter at programmets grafiske brukergrensesnitt viser teksten «Hello World!» og inneholder en knapp som heter «Start».

TRINN 3) Kjør test

Når du er ferdig med å skrive testprogrammet, kjører du testen ved å følge trinnene nedenfor.

  • Koble en Android enheten til PC-en, eller start en emulator hvis ingen ekte enhet er tilgjengelig.
  • I IDE-en din, høyreklikk på testprosjektet og velg Kjør som → Android Enhetstest.

Skjermbildet nedenfor viser testkjøringen som startes fra IDE-en.

Lansering av Robotium testprogram som et Android Enhetstest fra IDE-en

Kjører testprogrammet

I tillegg til å kjøre testen fra IDE-en, kan du kjøre den fra kommandolinjen. I dette testprogrammet er testpakken com.example.helloandroid.testI en Linux-terminal bruker du følgende kommando for å kjøre alle tester i den pakken.

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

TRINN 4) Få testresultatet

Etter at testen er utført, samler du inn testresultatene.

I dette testprogrammet utføres fire testmetoder. I kjøringen nedenfor ble alle testtilfellene bestått.

Testresultatutgang som viser alle fire Robotium beståtte testtilfeller

Testresultat ut når alle testtilfeller er bestått

Hvis en testtilfelle mislykkes, vises resultatet og viser hvilke testtilfeller som mislyktes.

Testresultatutdata som viser Robotium testtilfeller som mislyktes

Testresultatutgang når en testtilfelle mislykkes

Kilde Code Eksempler

Denne artikkelen inneholder eksempler på kildekode som hjelper deg med å følge veiledningen tydeligere og raskt lære deg de tekniske detaljene.

Hvis du vil sammenligne Robotium med de andre alternativene i dette rommet, se testing av mobilapplikasjoner guiden, den Appium tutorial og oppsummeringen av testverktøy for mobilapper.

Spørsmål og svar

Robotium 5.6.3 er fortsatt den siste publiserte utgivelsen, og aktiv utvikling ble stoppet for mange år siden. Rammeverket kjører fortsatt, og artefakten er fortsatt på Maven Central, men ny Android prosjekter velger vanligvis Espresso, Som Google opprettholder.

Robotium er et svartboks-rammeverk som binder seg til widgeter under kjøretid og trenger lite kunnskap om kilden. Espresso is Google's hvitboksverktøy som synkroniserer med brukergrensesnitttråden og forventer tilgang til applikasjonskode.

Robotium kjører ett program om gangen, kan ikke håndtere Flash- eller webinnhold utenfor en WebView pålitelig, tilbyr ingen innebygd innspilling i JAR-filen med åpen kildekode, og avhengigheten av utdaterte instrumenteringsklasser kompliserer moderne Gradle bygger.

Erklære androidTestImplementation 'com.jayway.android.robotium:robotium-solo:5.6.3' i modulbyggefilen, eller slipp robotium-solo JAR inn libs og refererer til den som en filavhengighet.

Ja. Robotium Tester er vanlige instrumenttester, så den samme APK-en kjører på en emulator eller et fysisk håndsett. Ekte maskinvare foretrekkes for bevegelses-, sensor- og ytelsestester, der emulatortimingen kan variere.

Robotium passer til funksjonelle, system- og brukerakseptscenarier på brukergrensesnittnivå. Det er ikke en erstatning for enhetstester, som kjører raskere på JVM, og heller ikke for den bredere typer programvaretesting en utgivelse trenger fortsatt.

Maskinlæring brukes til selvreparerende lokaliseringsverktøy som overlever layoutendringer, visuell sammenligning som flagger gjengivelsesregresjoner og deteksjon av ustabile tester som rangerer rekjøringer. Verktøyene reduserer vedlikehold, men et menneske bestemmer fortsatt hvilken atferd som er viktig.

GitHub Copilot kan scaffolde et Solo-oppsett, tearDown og assertion-metoder fra en aktivitetsklasse. RevSe forslaget nøye, fordi det kan utløse import av eldre pakker eller påstander som appen aldri oppfyller.

Oppsummer dette innlegget med: