Robotium Tutorial: Din första Android Ramverk
Vad är Robotium?
Robotium är ett Android-testramverk för att automatisera testfall för inhemska och hybridapplikationer. Med hjälp av Robotium kan utvecklaren skapa starka automatiska GUI-testfall för Android applikationer. Dessutom kan utvecklaren skriva ett funktions-, system- och acceptanstestscenario, vilket sprider många Android aktiviteter.
Ramverk för robottestning
Standard Android testramverket har vissa begränsningar enligt nedan
- Kan inte hantera flera aktiviteter
- Testkörningsprestandan är långsam
- Testfall är komplexa och svåra att implementera
En robotramverk är det bättre valet att utföra tester på Android ansökan
Robotium är ett ramverk med öppen källkod och anses vara en förlängning av Android testram. Med hjälp av Robotium kan utvecklare skapa robusta automatiska GUI-testfall för Android applikationer. Dessutom kan utvecklare skriva funktions-, system- och acceptanstestscenarier som spänner över flera Android aktiviteter.
.png)
Robotium testfallsklasser
Robotium använder uppsättning klasser (com.jayway.android.robotium.solo) för provning. Den här klassen stöder testfall som sträcker sig över flera aktiviteter. Solo är integrerat med ActivityInstrumentationTestCase2.
Testaren kan skriva testfall utan kunskap om applikationsdesign (black box testing) genom att använda Robotiums testfallsklasser. Det är en enastående funktion jämfört med Android testfallsklasser.
Hur man använder Robotium
För att använda Robotium i din Android testprojekt måste du följa stegen nedan
Använder Robotium för att utföra tester på Android Ansökan. För att garantera kvaliteten på din Android ansökan ska du följa proceduren nedan
- Designtestspecifikation
- Utveckla testprogram
- Utförande Testfall på målenheten
- Samla testresultat
STEG 1) Designtestspecifikation
- Detta är det första steget för att testa din applikation. I detta steg definierar du mål som ska testas. I din Android applikation, det finns många mål som måste testas såsom UI, aktivitet, komponenter, tjänster. Att tydligt definiera målet i din ansökan hjälper till att uppnå bred testtäckning.
- Planera vilka testtyper som ska utföras (enhetstest, funktionstest, systemtest).
- Designa testfall för maximal täckning men minimera antalet testfall. Ju mer kod som testas mer är chansen till tidig buggupptäckt.
STEG 2) Skriv TEST-programmet
Det här avsnittet guidar dig hur du skriver en Android testprogram med hjälp av Android junit Test och Robotium. Antag att du redan har utvecklat en Android programnamn HejAndroid. Detta program har några funktioner som beskrivs nedan:
- Visa texten "Hej värld!" på skärm.
- Visa ett meddelande HejAndroid när användaren trycker på "Start"-knappen
Systemkrav
- Android plattformen levereras med förintegrerad JUnit 3.0 ramverk.
- För att skapa Android Testprojekt från Eclipse, måste din dator ha installerat:
- Senaste versionen Android Plattform (för närvarande Android 8.1)
Du kan ladda ner Eclipse IDE med inbyggd ADT (Android Utvecklarverktyg). Det inkluderar det väsentliga Android SDK-komponenter och en version av Eclipse IDE .
För Robotium-testramverket måste du ta ner Robotium-biblioteket från Robotium webbsida.
Skapa Android Testprojekt
- Klicka på Arkiv -> Nytt -> Annat
- Välj: Android -> Android Testa projekt enligt bilden nedan -> Välj Nästa
Skriv namnet på ditt testprojekt. Som namnkonvention bör ditt testprojekt heta "HejAndroidTesta"
Välj målapplikation som testas. I det här fallet är det här HejAndroid klicka på Slutför
Skapa testsviter
Baserat på din testspecifikation började du skapa testsviter för ditt testprogram. Du kan välja olika testramverk. I den här handledningen väljer jag standard Android ramverk för testning ActivityInstrumentationTestCase2. Du måste lägga till Robotium-biblioteksfilen till en libs-katalog i din projektmapp om du vill testa med Robotium-ramverket. (Du skapar lib-mappen i din projektmapp).
Ett testfall definierar fixturen för att köra flera tester. För att definiera ett testfall måste du följa programstrukturen nedan:
- Implementera en underklass av
TestCase
. - Definiera instansvariabler som lagrar fixturens tillstånd
- Initiera fixturtillståndet genom att åsidosätta setUp()
- Rensa efter ett test genom att åsidosätta tearDown().
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
- I samma paket med TestSuite skapar vi TestCase-klasser
- För att testa viss aktivitet dvs HejAndroid, skapa ett testfall omfattning ActivityInstrumentationTestCase2Android>
- I den här klassen kan testaren få testaktivitet genom metoden getActivity() .
- Du kan fritt skapa test för en testaktivitet genom att skapa metod med namnet "test + originalmetodnamn"
- I testmetod kan testaren använda Android JUnit funktion för att jämföra verkligt värde och förväntat värde. Dessa metoder visas nedan.
Dessa testsviter ovan verifierade att Application GUI måste visa texten "Hello World!", och innehåller ett knappnamn "Start".
STEG 3) Kör test
När du har skrivit klart ditt testprogram kör du testet med hjälp av stegen nedan
- Kontakta Android enheten till din PC (eller starta Emulator om du inte har en riktig enhet).
- Högerklicka på Kör som i din IDEAndroid Enhetstest
Förutom att köra test på IDE, kan du köra test på kommandoraden. I det här testprogrammet är testpaketet com.example.helloandroid.test . I Linux terminal, kan du använda följande kommando för att köra alla tester i detta paket:
$ adb shell am instrument -w -e package com.example.helloandroid.test
STEG 4) Få testresultat
När testet har körts får du testresultat.
I detta testprogram exekveras 4 testmetoder. I detta fall är alla testfall godkända.
Om testfall misslyckas visas utgången och visar vilka testfall som misslyckades
Exempel på källkod
De här artiklarna innehåller några exempel på källkod som hjälper dig att förstå handledningen tydligare och snabbt fånga upp den tekniska kunskapen
- HejAndroid: Applikation under test .
- HejAndroidTesta: Testprogram med hjälp av Android Testramverk