Robotium tutorial: Android Testramme med eksempel

⚡ Smart opsummering

Robotium er en open source Android testautomatiseringsframework, der driver native og hybride apps gennem deres brugergrænseflade, hvilket giver en tester mulighed for at scripte funktionelle, system- og acceptscenarier, der spænder over flere Android aktiviteter.

  • 🔘 Kerneklasse: Solo afslører klik-, søge-, træk- og assertion-metoderne, som alle Robotium testcase-kald.
  • ☑️ Black-box-venlig: Test binder til UI-komponenter under kørsel, så minimal kendskab til applikationskilden er påkrævet.
  • ✅ Firetrinsprocedure: Design testspecifikationen, skriv testprogrammet, udfør det på en enhed, og indsaml derefter resultatet.
  • 🧪 Udarbejdet eksempel: Et komplet HejAndroidTestklassen tjekker den synlige tekst, den aktuelle aktivitet og Start-knappen.
  • 🛠️ To løbstilstande: Start tests fra IDE'en eller fra en terminal med adb shell am instrument-kommandoen.
  • 🇧🇷 Nuværende status: Robotium 5.6.3 er fortsat den sidste udgivelse, så ny Android projekter parrer eller erstatter det normalt med Espresso.

Robotium tutorial

Hvad er Robotium?

Robotium er en Android testframework, der automatiserer testcases for native og hybride applikationer. Brug Robotium, kan en udvikler oprette robuste automatiserede GUI-testcases til Android applikationer. En udvikler kan også skrive funktionelle, system- og accepttestscenarier, der spænder over flere Android aktiviteter.

Robotium Testramme

Standarden Android Testrammen har de begrænsninger, der er anført nedenfor.

  • Ude af stand til at håndtere flere aktiviteter
  • Ydeevnen for testudførelse er langsom
  • Testcases er komplekse og svære at implementere

Robotium framework er det bedre valg til at udføre test på en Android ansøgning.

Robotium er et open source-framework og betragtes som en udvidelse af Android testramme. Brug af Robotium, kan en udvikler oprette robuste automatiserede GUI-testcases til Android applikationer. Derudover kan en udvikler skrive funktionelle, system- og accepttestscenarier, der spænder over flere Android aktiviteter.

Tabellen nedenfor opsummerer de avancerede funktioner, der adskiller Robotium fra den almindelige instrumenteringsramme.

Avancerede funktioner af Robotium sammenlignet med standarden Android instrumenteringsramme

Avancerede funktioner af Robotium

Robotium Test Case klasser

Robotium sender et lille sæt klasser til test, og artiklens eksempel importerer de ældre klasser com.jayway.android.robotium.solo pakke. Disse klasser understøtter testcases, der spænder over flere aktiviteter, og Solo er integreret med ActivityInstrumentationTestCase2.

Bemærk: strøm Robotium udgivelser eksponerer den samme klasse under den kortere com.robotium.solo pakke, mens Maven-koordinaten forblev com.jayway.android.robotium:robotium-soloJuster importen, så den matcher den JAR-version, du rent faktisk tilføjer til projektet.

Diagrammet nedenfor viser, hvordan Solo-klassen placeres oven på instrumentationstestcasen.

Soloklasse integreret med ActivityInstrumentationTestCase2 i en Robotium test sag

Integration af Robotium og AktivitetsInstrumentationTestCase2

En tester kan skrive testcases uden kendskab til applikationsdesignet, hvilket gør tilgangen til en form for sort kasse testDet er en enestående fordel sammenlignet med almindeligt Android testcase klasser.

Sådan bruges den: Robotium

At bruge Robotium i din Android testprojekt, skal du følge nedenstående trin.

Nødvendige trin for at tilføje og bruge Robotium inde i en Android testprojekt

Brugsvejledning Robotium

For at garantere kvaliteten af ​​din Android ansøgningen, følg nedenstående firetrinsprocedure.

  • Design testspecifikationen
  • Udvikle testprogrammet
  • Udfør testcasen på målenheden
  • Indsaml testresultatet

Flowdiagrammet nedenfor placerer de fire faser i rækkefølge.

Flowdiagram over firetrinsmodellen Android procedure for applikationstest

Android procedure for applikationstest

TRIN 1) Designtestspecifikation

Dette er det første trin i testningen af ​​din applikation. I dette trin definerer du det mål, der skal testes. Android Applikationen har mange mål, der skal testes, såsom brugergrænsefladen, aktiviteter, komponenter og tjenester. En klar definition af målet hjælper dig med at opnå bred testdækning.

  • Planlæg de testtyper, der skal udføres (enhedstest, funktionstest, systemtest).
  • Design hver test sag for maksimal dækning, mens du holderping antallet af testcases er lille. Jo mere kode du tester, desto større er chancen for tidlig fejldetektion.

TRIN 2) Skriv testprogram

Dette afsnit guider dig gennem at skrive en Android testprogram vha Android JUnit test og RobotiumAntag, at du allerede har udviklet en Android program ved navn HejAndroidDette program har de funktioner, der er beskrevet nedenfor.

  • Vis teksten "Hej verden!" på skærmen.
  • Vis et hejAndroid besked, når brugeren trykker på knappen "Start".

Skærmbilledet nedenfor viser applikationen under test, der kører på en enhed.

HejAndroid applikation under test, der viser Hej Verden-teksten og Start-knappen

HejAndroid ansøgning

Systemkrav

  • Android platform leveres med en præintegreret JUnit 3 rammeværk, hvilket er hvad ActivityInstrumentationTestCase2 bygger på.
  • Sådan opretter du en Android testprojekt fra Eclipse, din maskine har brug for en fungerende Android SDK-installation.
  • Installer den nuværende Android platform SDK i stedet for en fastlåst ældre udgivelse.

Skærmbillederne i denne gennemgang bruger Eclipse med ADT-pluginnet, som var standardværktøjskæden, da eksemplet blev skrevet. Eclipse ADT understøttes ikke længere, så på en moderne maskine ville du downloade Android Studio i stedet og genbruge den samme testkode inde i en Gradle modul.

For Robotium testramme, download den Robotium biblioteket fra Robotium projektsiden.

Opret en Android Testprojekt

  • Klik på Filer -> Ny -> Andet
  • Vælg Android -> Android Testprojekt som vist på figuren nedenfor, og vælg derefter Næste

Eclipse Ny projektguide med Android Testprojekt valgt

Opret en ny Android testprojekt

Skriv navnet på dit testprojekt. Ifølge navngivningskonventionen skal testprojektet hedde "HejAndroidPrøve".

Eclipse dialog med testprojektet ved navn HejAndroidTest efter navngivningskonventionen

Tilføj testprojektets navn baseret på navngivningskonventionen

Vælg den målapplikation, der testes. I dette tilfælde er det HejAndroid, og klik derefter på Udfør.

Eclipse Guidetrin, der vælger HejAndroid som målapplikationen under test

Vælg den målapplikation, der testes

Opret testsuiter

Baseret på din testspecifikation opretter du nu testpakker til dit testprogram. Du kan vælge mellem forskellige software test rammer. Denne vejledning bruger standarden Android testramme ActivityInstrumentationTestCase2At teste med Robotium, tilføj Robotium biblioteksfil til en libs mappe i din projektmappe.

En testcase definerer den fixture, der bruges til at køre flere tests. For at definere en testcase skal du følge programstrukturen nedenfor.

  • Implementer en underklasse af TestCase.
  • Definer instansvariabler, der gemmer tilstanden af ​​​​fixturen.
  • Initialiser fixture-tilstanden ved at tilskrive setUp().
  • Ryd op efter en test ved at tilsidesætte tearDown().

Diagrammet nedenfor afbilder den struktur på det testprogram, du er ved at skrive.

Struktur af en Robotium testprogram, der viser opsætning, testmetoder og nedtagning

Testprogramstruktur

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

	

}

Tilføjelse af testsager

  • Opret TestCase-klasserne i den samme pakke som testsuiten.
  • For at teste en bestemt aktivitet, for eksempel HejAndroid, opret en testcase, der udvider ActivityInstrumentationTestCase2Android>.
  • Inde i den klasse henter testeren den aktivitet, der testes, via metoden getActivity().
  • Opret frit en test til aktiviteten ved at tilføje en metode med navnet "test + originalt metodenavn".
  • Inden for testmetoden kan testeren bruge Android JUnit funktioner til at sammenligne den faktiske værdi med den forventede værdi. Disse metoder er vist nedenfor.

Tabellen nedenfor viser de assertion- og interaktionsmetoder, der oftest anvendes i de to frameworks.

Eksempelmetoder for Robotium Soloklasse og Android testramme

Eksempelmetoder til Robotium og Android testramme

Testpakken ovenfor verificerer, at applikationens GUI viser teksten "Hello World!" og indeholder en knap med navnet "Start".

TRIN 3) Kør test

Når du er færdig med at skrive dit testprogram, skal du køre testen ved hjælp af nedenstående trin.

  • Tilslut en Android enhed til din pc, eller start en emulator, hvis der ikke er nogen rigtig enhed tilgængelig.
  • I din IDE skal du højreklikke på testprojektet og vælge Kør som → Android Enhedstest.

Skærmbilledet nedenfor viser testkørslen, der startes fra IDE'en.

Lancering af Robotium testprogram som et Android Enhedstest fra IDE'en

Kørsel af testprogrammet

Udover at køre testen fra IDE'en kan du køre den fra kommandolinjen. I dette testprogram er testpakken com.example.helloandroid.testI en Linux-terminal skal du bruge følgende kommando til at køre alle test i den pakke.

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

TRIN 4) Få testresultatet

Når testen er udført, indsamler du testresultaterne.

I dette testprogram udføres fire testmetoder. I nedenstående kørsel bestod alle testcases.

Testresultatet viser alle fire Robotium beståede testtilfælde

Testresultat udlæses, når alle testtilfælde er bestået

Hvis en testcase mislykkes, vises outputtet og viser dig, hvilke testcases der mislykkedes.

Testresultatoutputtet viser Robotium testtilfælde, der mislykkedes

Testresultatoutput, når en testcase fejler

Kilde Code Eksempler

Denne artikel indeholder eksempler på kildekode, der hjælper dig med at følge vejledningen mere tydeligt og hurtigt forstå de tekniske detaljer.

Hvis du vil sammenligne Robotium med de andre muligheder i dette område, se test af mobilapplikationer guiden, den Appium tutorial og opsamlingen af værktøjer til test af mobilapps.

Ofte Stillede Spørgsmål

Robotium 5.6.3 er fortsat den sidste udgivne udgivelse, og den aktive udvikling stoppede for år siden. Frameworket kører stadig, og artefakten findes stadig på Maven Central, men er ny. Android projekter vælger normalt Espresso, Hvilket Google vedligeholder.

Robotium er et black-box-framework, der binder til widgets under kørsel og kræver kun lidt kendskab til kilden. Espresso is Google's white-box-værktøj, der synkroniserer med UI-tråden og forventer adgang til applikationskode.

Robotium kører én applikation ad gangen, kan ikke håndtere Flash eller webindhold uden for en WebView pålideligt, tilbyder ingen indbygget optagelse i open source JAR, og dens afhængighed af forældede instrumenteringsklasser komplicerer moderne Gradle bygger.

Erklære androidTestImplementation 'com.jayway.android.robotium:robotium-solo:5.6.3' i modulbyggefilen, eller slip den robotium-solo JAR ind libs og refererer til den som en filafhængighed.

Ja. Robotium Testene er almindelige instrumenttests, så den samme APK kører på en emulator eller en fysisk håndenhed. Ægte hardware foretrækkes til bevægelses-, sensor- og ydeevnetjek, hvor emulatortimingen kan variere.

Robotium passer til funktionelle, system- og brugeracceptscenarier på brugergrænsefladeniveau. Det er ikke en erstatning for enhedstests, som kører hurtigere på JVM'en, og heller ikke for den bredere typer af softwaretestning en udgivelse mangler stadig.

Maskinlæring bruges til selvreparerende lokaliseringsværktøjer, der overlever layoutændringer, visuel sammenligning, der markerer gengivelsesregressioner, og flaky-testdetektion, der rangerer gentagelser. Værktøjerne reducerer vedligeholdelse, men et menneske bestemmer stadig, hvilken adfærd der er vigtig.

GitHub Copilot kan scaffolde en Solo setup, tearDown og assertion-metoder fra en aktivitetsklasse. RevGennemgå forslaget omhyggeligt, da det kan udløse import af ældre pakker eller påstande, som appen aldrig opfylder.

Opsummer dette indlæg med: