Robotium Handledning: Android Testramverk med exempel

⚡ Smart sammanfattning

Robotium är en öppen källkod Android ramverk för testautomation som driver native och hybridappar genom sitt användargränssnitt, vilket låter ett testskript fungerande, system- och acceptansscenarier som spänner över flera Android aktiviteter.

  • 🔘 Kärnklass: Solo avslöjar klick-, sök-, dra- och assertion-metoderna som alla Robotium testfallsanrop.
  • ☑️ Svarta lådevänlig: Tester binder till UI-komponenter vid körning, så minimal kunskap om applikationens källa krävs.
  • ✅ Fyra stegs procedur: Designa testspecifikationen, skriv testprogrammet, kör det på en enhet och samla sedan in resultatet.
  • 🧪 Utarbetat exempel: Ett komplett HejAndroidTestklassen kontrollerar den synliga texten, den aktuella aktiviteten och Start-knappen.
  • 🛠️ Två körlägen: Starta tester från IDE:n eller från en terminal med adb shell am instrument-kommandot.
  • ⚙️ Aktuell status: Robotium 5.6.3 är fortfarande den sista utgåvan, så ny Android projekt brukar para ihop eller ersätta det med Espresso.

Robotium Handledning

Vad är Robotium?

Robotium är en Android testramverk som automatiserar testfall för native och hybridapplikationer. Användning Robotium, kan en utvecklare skapa robusta automatiserade GUI-testfall för Android applikationer. En utvecklare kan också skriva funktionella, system- och acceptanstestscenarier som sträcker sig över flera Android aktiviteter.

Robotium Testramverk

Standarden Android Testramverket har de begränsningar som anges nedan.

  • Kan inte hantera flera aktiviteter
  • Testkörningsprestandan är långsam
  • Testfall är komplexa och svåra att implementera

Ocuco-landskapet Robotium ramverket är det bättre valet för att utföra tester på en Android ansökan.

Robotium är ett ramverk med öppen källkod och betraktas som en förlängning av Android testramverk. Använda Robotium, kan en utvecklare skapa robusta automatiserade GUI-testfall för Android applikationer. Dessutom kan en utvecklare skriva funktionella, system- och acceptanstestscenarier som spänner över flera Android aktiviteter.

Tabellen nedan sammanfattar de avancerade funktioner som skiljer Robotium från det vanliga instrumentramverket.

Avancerade funktioner i Robotium jämfört med standarden Android instrumenteringsram

Avancerade funktioner i Robotium

Robotium Testfallsklasser

Robotium skickar en liten uppsättning klasser för testning, och artikelns exempel importerar de äldre com.jayway.android.robotium.solo paket. Dessa klasser stöder testfall som sträcker sig över flera aktiviteter, och Solo är integrerad med ActivityInstrumentationTestCase2.

Obs: ström Robotium utgåvor exponerar samma klass under den kortare com.robotium.solo paket, medan Maven-koordinaten stannade kvar com.jayway.android.robotium:robotium-soloJustera importen så att den matchar den JAR-version du faktiskt lägger till i projektet.

Diagrammet nedan visar hur Solo-klassen placeras ovanpå instrumenttestfallet.

Soloklass integrerad med ActivityInstrumentationTestCase2 i en Robotium testfall

Integration av Robotium och AktivitetsinstrumenteringTestfall2

En testare kan skriva testfall utan kunskap om applikationsdesignen, vilket gör metoden till en form av svartbox testningDet är en enastående fördel jämfört med slätten Android testfallsklasser.

Så här använder du Robotium

Att använda Robotium i din Android testprojektet måste du följa stegen nedan.

Steg som krävs för att lägga till och använda Robotium inuti en Android testprojekt

Mindergy på kontoret Robotium

För att garantera kvaliteten på din Android ansökan, följ proceduren i fyra steg nedan.

  • Utforma testspecifikationen
  • Utveckla testprogrammet
  • Kör testfallet på målenheten
  • Samla in testresultatet

Flödesschemat nedan placerar de fyra stegen i ordning.

Flödesschema för fyrstegsmodellen Android applikationstestprocedur

Android applikationstestprocedur

STEG 1) Specifikation för designtest

Detta är det första steget i att testa din applikation. I det här steget definierar du målet som ska testas. Android Applikationen har många mål som behöver testas, såsom användargränssnitt, aktiviteter, komponenter och tjänster. Att tydligt definiera målet hjälper dig att uppnå bred testtäckning.

  • Planera de testtyper som ska utföras (enhetstest, funktionstest, systemtest).
  • Designa varje testfall för maximal täckning samtidigt somping antalet testfall är litet. Ju mer kod du testar, desto större är chansen att upptäcka fel tidigt.

STEG 2) Skriv testprogram

Det här avsnittet guidar dig genom att skriva en Android testprogram med hjälp av Android JUnit tester och RobotiumAnta att du redan har utvecklat en Android program som heter HallåAndroidDet här programmet har funktionerna som beskrivs nedan.

  • Visa texten "Hej världen!" på skärmen.
  • Visa ett hejAndroid meddelande när användaren trycker på "Start"-knappen.

Skärmdumpen nedan visar applikationen som körs på en enhet under test.

HejAndroid applikation under test som visar Hej världen-texten och Start-knappen

HejAndroid ansökan

Systemkrav

  • Ocuco-landskapet Android plattformen levereras med en förintegrerad JUnit 3 ramverk, vilket är vad ActivityInstrumentationTestCase2 bygger vidare.
  • Att skapa en Android testprojekt från Eclipse, din maskin behöver en fungerande Android SDK-installation.
  • Installera den nuvarande Android plattforms-SDK snarare än en fäst äldre version.

Skärmdumparna i den här genomgången använder Eclipse med ADT-pluginet, vilket var standardverktygskedjan när exemplet skrevs. Eclipse ADT stöds inte längre, så på en modern maskin skulle du ladda ner Android Studio istället och återanvända samma testkod inuti en Gradle modul.

För Robotium testramverket, ladda ner Robotium biblioteket från Robotium projektsida.

Skapa ett Android Testprojekt

  • Klicka på Arkiv -> Nytt -> Annat
  • Välja Android -> Android Testa projektet som visas i bilden nedan och välj sedan Nästa

Eclipse Ny projektguide med Android Testprojekt valt

Skapa en ny Android testprojekt

Skriv namnet på ditt testprojekt. Enligt namngivningskonventionen ska testprojektet heta "HejAndroidTesta".

Eclipse dialog med testprojektet med namnet HejAndroidTest enligt namngivningskonventionen

Lägg till testprojektets namn baserat på namngivningskonventionen

Välj målapplikationen som testas. I det här fallet är det HelloAndroidoch klicka sedan på Slutför.

Eclipse guidesteg att välja HejAndroid som målapplikationen under test

Välj målapplikationen som testas

Skapa testsviter

Baserat på din testspecifikation skapar du nu testsviter för ditt testprogram. Du kan välja mellan olika mjukvarutestning ramverk. Den här handledningen använder standarden Android ramverk för testning ActivityInstrumentationTestCase2Att testa med Robotium, Lägg till Robotium biblioteksfil till en libs katalogen i din projektmapp.

Ett testfall definierar den fixtur som används för att köra flera tester. För att definiera ett testfall, följ programstrukturen nedan.

  • Implementera en underklass av TestCase.
  • Definiera instansvariabler som lagrar fixturens tillstånd.
  • Initiera fixturens tillstånd genom att åsidosätta setUp().
  • Rensa upp efter ett test genom att åsidosätta tearDown().

Diagrammet nedan visar den strukturen i det testprogram du ska skriva.

Struktur av en Robotium testprogram som visar setUp, testmetoder och tearDown

Testprogrammets struktur

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

	

}

Lägger till testfall

  • Skapa TestCase-klasserna i samma paket som testsviten.
  • För att testa en viss aktivitet, till exempel HejAndroid, skapa ett testfall som utökar ActivityInstrumentationTestCase2Android>.
  • Inuti den klassen hämtar testaren aktiviteten som testas genom metoden getActivity().
  • Skapa ett test för aktiviteten fritt genom att lägga till en metod med namnet "test + ursprungligt metodnamn".
  • Inom testmetoden kan testaren använda Android JUnit funktioner för att jämföra det faktiska värdet med det förväntade värdet. Dessa metoder visas nedan.

Tabellen nedan listar de metoder för påstående och interaktion som oftast används i de två ramverken.

Exempelmetoder för Robotium Soloklassen och Android ramverk för testning

Exempelmetoder för Robotium och Android ramverk för testning

Testsviten ovan verifierar att programmets grafiska gränssnitt visar texten "Hej världen!" och innehåller en knapp med namnet "Start".

STEG 3) Kör test

När du har skrivit ditt testprogram kör du testet med hjälp av stegen nedan.

  • Anslut en Android enheten till din dator, eller starta en emulator om ingen riktig enhet är tillgänglig.
  • I din IDE högerklickar du på testprojektet och väljer Kör som → Android Enhetstest.

Skärmdumpen nedan visar testkörningen som startas från IDE:n.

Lansering av Robotium testprogram som ett Android Enhetstest från IDE:n

Köra testprogrammet

Förutom att köra testet från IDE:n kan du köra det från kommandoraden. I det här testprogrammet är testpaketet com.example.helloandroid.testI en Linux-terminal, använd följande kommando för att köra varje test i det paketet.

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

STEG 4) Få testresultat

När testet är kört samlar du in testresultaten.

I detta testprogram körs fyra testmetoder. I körningen nedan godkändes alla testfall.

Testresultatet visar alla fyra Robotium godkända testfall

Testresultat utmatas när alla testfall godkänns

Om ett testfall misslyckas visas utdata och visar vilka testfall som misslyckades.

Testresultatet visar Robotium testfall som misslyckades

Testresultat utmatning när ett testfall misslyckas

Källa Code Exempel

Den här artikeln innehåller exempel på källkod som hjälper dig att följa handledningen tydligare och snabbt lära dig de tekniska detaljerna.

Om du vill jämföra Robotium med de andra alternativen i detta utrymme, se test av mobilapplikationer guiden, den Appium handledning och sammanfattningen av testverktyg för mobilappar.

Vanliga frågor

Robotium 5.6.3 är fortfarande den senast publicerade utgåvan och den aktiva utvecklingen stoppades för flera år sedan. Ramverket körs fortfarande, och artefakten finns fortfarande på Maven Central, men ny Android projekt väljer normalt Espresso, Vilket Google upprätthåller.

Robotium är ett black-box-ramverk som binder till widgetar vid körning och kräver liten kunskap om källkoden. Espresso is Googles white-box-verktyg som synkroniserar med UI-tråden och förväntar sig åtkomst till applikationskod.

Robotium driver en applikation i taget, kan inte hantera Flash eller webbinnehåll utanför en WebView pålitligt, erbjuder ingen inbyggd inspelning i JAR-filen med öppen källkod, och dess beroende av föråldrade instrumenteringsklasser komplicerar moderna Gradle bygger.

Förklara androidTestImplementation 'com.jayway.android.robotium:robotium-solo:5.6.3' i modulbyggfilen, eller släpp robotium-solo JAR in libs och referera till den som ett filberoende.

Ja. Robotium Testerna är vanliga instrumenttester, så samma APK körs på en emulator eller en fysisk handenhet. Riktig hårdvara föredras för gest-, sensor- och prestandakontroller, där emulatortimingen kan skilja sig åt.

Robotium passar funktionella, system- och användaracceptansscenarier på UI-nivå. Det ersätter inte enhetstester, som körs snabbare på JVM, och inte heller den bredare typer av mjukvarutestning en utgåva behövs fortfarande.

Maskininlärning används för självläkande positionerare som överlever layoutändringar, visuell jämförelse som flaggar renderingsregressioner och detektion av ojämna tester som rangordnar omkörningar. Verktygen minskar underhållet, men en människa avgör fortfarande vilket beteende som är viktigt.

GitHub Copilot kan scaffolda en Solo setup, tearDown och assertion-metoder från en aktivitetsklass. RevGranska förslaget noggrant, eftersom det kan generera import av äldre paket eller intyg som appen aldrig uppfyller.

Sammanfatta detta inlägg med: