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.

The diagram below shows how the Solo class sits on top of the instrumentation test case.

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
  • Develop the test program
  • 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 frameworks. This tutorial uses the standard 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.

In this test program four test methods are executed. In the run below, all test cases passed.

Test result output showing all four 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 can scaffold a Solo setup, tearDown and assertion methods from an activity class. RevGranska fรถrslaget noggrant, eftersom det kan generera import av รคldre paket eller intyg som appen aldrig uppfyller.

Sammanfatta detta inlรคgg med: