Robotium Tutorial: Android Testframework met voorbeeld

โšก Slimme samenvatting

Robotium is een open-source Android Een framework voor testautomatisering dat native en hybride apps aanstuurt via hun gebruikersinterface, waardoor een tester functionele, systeem- en acceptatietests kan scripten die meerdere testomgevingen bestrijken. Android activiteiten.

  • ๐Ÿ”˜ Kernvak: Solo toont de klik-, zoek-, sleep- en assertiemethoden die iedereen Robotium testcase-aanroepen.
  • โ˜‘๏ธ Geschikt voor black box-systemen: Tests worden tijdens de uitvoering gekoppeld aan UI-componenten, waardoor minimale kennis van de broncode van de applicatie vereist is.
  • โœ… Procedure in vier stappen: Ontwerp de testspecificatie, schrijf het testprogramma, voer het uit op een apparaat en verzamel vervolgens het resultaat.
  • ๐Ÿงช Uitgewerkt voorbeeld: Een complete HalloAndroidDe testklasse controleert de zichtbare tekst, de huidige activiteit en de Start-knop.
  • ๏ธ Twee uitvoeringsmodi: Start tests vanuit de IDE of vanuit een terminal met het commando `adb shell am instrument`.
  • โš™๏ธ Huidige status: Robotium 5.6.3 blijft de laatste release, dus nieuwe Android projecten combineren of vervangen het meestal door Espresso.

Robotium Tutorial

Wat is Robotium?

Robotium is een Android Testframework dat testcases automatiseert voor native en hybride applicaties. RobotiumEen ontwikkelaar kan robuuste, geautomatiseerde GUI-testcases maken voor Android Een ontwikkelaar kan ook functionele, systeem- en acceptatietestscenario's schrijven die meerdere applicaties omvatten. Android activiteiten.

Robotium Testraamwerk

De standaard Android Het testframework kent de onderstaande beperkingen.

  • Kan niet meerdere activiteiten aan
  • De prestaties van de testuitvoering zijn traag
  • Testgevallen zijn complex en moeilijk te implementeren.

De Robotium framework is de betere keuze voor het uitvoeren van tests op een Android toepassing.

Robotium is een open-source framework en wordt beschouwd als een uitbreiding van de Android testframework. Gebruikmakend van RobotiumEen ontwikkelaar kan robuuste, geautomatiseerde GUI-testcases maken voor Android Bovendien kan een ontwikkelaar functionele, systeem- en acceptatietestscenario's schrijven die meerdere applicaties omvatten. Android activiteiten.

De onderstaande tabel geeft een overzicht van de geavanceerde functies die onderscheidend zijn. Robotium vanuit het eenvoudige instrumentatiekader.

Geavanceerde functies van Robotium vergeleken met de standaard Android instrumentatie raamwerk

Geavanceerde functies van Robotium

Robotium Testcase-klassen

Robotium Het pakket bevat een kleine set klassen voor testdoeleinden, en het voorbeeld in het artikel importeert de oude versie. com.jayway.android.robotium.solo pakket. Deze klassen ondersteunen testgevallen die meerdere activiteiten omvatten, en Solo is geรฏntegreerd met ActivityInstrumentationTestCase2.

Let op: actueel Robotium Uitgaven tonen dezelfde klasse aan onder de kortere com.robotium.solo pakket, terwijl de Maven-coรถrdinaat bleef com.jayway.android.robotium:robotium-soloPas de import aan zodat deze overeenkomt met de JAR-versie die je daadwerkelijk aan het project toevoegt.

Het onderstaande diagram laat zien hoe de Solo-klasse bovenop de instrumentatietestcase is geplaatst.

Solo-klasse geรฏntegreerd met ActivityInstrumentationTestCase2 in een Robotium testcase

Integratie van Robotium en ActiviteitInstrumentatieTestcase2

Een tester kan testgevallen schrijven zonder kennis van het applicatieontwerp, waardoor deze aanpak een vorm van black box testenDat is een enorm voordeel ten opzichte van de gewone versie. Android testcase klassen.

Hoe te gebruiken Robotium

Te gebruiken Robotium in Android Om het project te testen, moet je de onderstaande stappen volgen.

Stappen die nodig zijn om toe te voegen en te gebruiken Robotium binnen een Android testproject

Gebruiksaanwijzing Robotium

Om de kwaliteit van uw te garanderen Android Volg voor de aanvraag de onderstaande procedure in vier stappen.

  • Ontwerp de testspecificatie
  • Ontwikkel het testprogramma.
  • Voer de testcase uit op het doelapparaat.
  • Verzamel de testresultaten.

Het onderstaande stroomschema plaatst die vier fasen in de juiste volgorde.

Stroomschema van de vier fasen Android applicatietestprocedure

Android applicatietestprocedure

STAP 1) Ontwerp testspecificatie

Dit is de eerste stap in het testen van je applicatie. In deze stap definieer je het te testen doel. Android Een applicatie heeft veel onderdelen die getest moeten worden, zoals de gebruikersinterface, activiteiten, componenten en services. Door de doelen duidelijk te definiรซren, bereik je een brede testdekking.

  • Plan welke soorten tests uitgevoerd moeten worden (unit-test, functionele test, systeemtest).
  • Ontwerp elk testcase voor maximale dekking terwijl uping Het aantal testgevallen moet klein zijn. Hoe meer code je test, hoe groter de kans op het vroegtijdig opsporen van bugs.

STAP 2) Schrijf een testprogramma

Deze sectie begeleidt u bij het schrijven van een Android testprogramma gebruiken Android JUnit tests en RobotiumStel dat u al een hebt ontwikkeld. Android programma genaamd HalloAndroidDit programma heeft de onderstaande functies.

  • Toon de tekst "Hallo wereld!" op het scherm.
  • Toon een 'Hallo'-berichtAndroid Dit bericht verschijnt wanneer de gebruiker op de knop "Start" drukt.

De onderstaande schermafbeelding toont de te testen applicatie die op een apparaat draait.

HalloAndroid De applicatie die wordt getest, toont de tekst "Hello world" en de knop "Start".

HalloAndroid toepassing

Systeem vereisten

  • De Android platform wordt geleverd met een vooraf geรฏntegreerde JUnit 3 raamwerken, wat is wat ActivityInstrumentationTestCase2 bouwt voort.
  • Om een Android testproject van EclipseUw machine heeft een werkende machine nodig. Android SDK-installatie.
  • Installeer de huidige Android platform-SDK in plaats van een vastgezette oudere release.

De schermafbeeldingen in deze handleiding maken gebruik van... Eclipse met de ADT-plugin, die de standaard toolchain was toen het voorbeeld werd geschreven. Eclipse ADT wordt niet langer ondersteund, dus op een moderne computer zou je... Download Android Studio in plaats daarvan dezelfde testcode hergebruiken binnen een Gradle module.

Voor de Robotium testframework, download het Robotium bibliotheek van de Robotium project pagina.

Maak een Android Testproject

  • Klik op Bestand -> Nieuw -> Overige
  • Kies Android -> Android Test het project zoals weergegeven in de onderstaande afbeelding en kies vervolgens Volgende.

Eclipse Nieuwe projectwizard met Android Testproject geselecteerd

Maak een nieuw Android testproject

Schrijf de naam van je testproject op. Volgens de naamgevingsconventie zou het testproject "Hallo" moeten heten.AndroidTest".

Eclipse dialoog met het testproject genaamd HalloAndroidTest volgens de naamgevingsconventie

Voeg de naam van het testproject toe volgens de naamgevingsconventie.

Kies de te testen applicatie. In dit geval is dat Hello.Androiden klik vervolgens op Voltooien.

Eclipse wizardstap 'Hallo' selecterenAndroid als de doelapplicatie die getest wordt

Selecteer de applicatie die u wilt testen.

Maak testsuites

Op basis van uw testspecificatie maakt u nu testsuites voor uw testprogramma. U kunt kiezen uit verschillende opties. software testen frameworks. Deze handleiding maakt gebruik van de standaard Android testkader ActivityInstrumentationTestCase2Om te testen met Robotium, voeg de toe Robotium bibliotheekbestand naar een libs map in je projectmap.

Een testcase definieert de testomgeving die wordt gebruikt om meerdere tests uit te voeren. Volg de onderstaande programmastructuur om een โ€‹โ€‹testcase te definiรซren.

  • Implementeer een subklasse van TestCase.
  • Definieer instantievariabelen die de status van het testobject opslaan.
  • Initialiseer de fixture-status door de methode setUp() te overschrijven.
  • Ruim op na een test door de tearDown()-methode te overschrijven.

Het onderstaande diagram vertaalt die structuur naar het testprogramma dat u gaat schrijven.

Structuur van een Robotium Testprogramma met uitleg over installatie, testmethoden en demontage.

Testprogrammastructuur

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

	

}

Testgevallen toevoegen

  • Maak in hetzelfde pakket als de testsuite de TestCase-klassen aan.
  • Om een โ€‹โ€‹bepaalde activiteit te testen, bijvoorbeeld HalloAndroidMaak een testcase die ActivityInstrumentationTestCase2 uitbreidt.Android>.
  • Binnen die klasse verkrijgt de tester de te testen activiteit via de getActivity()-methode.
  • Maak vrijelijk een test voor de activiteit door een methode toe te voegen met de naam "test + oorspronkelijke methodenaam".
  • Binnen de testmethode kan de tester gebruikmaken van Android JUnit Functies om de werkelijke waarde te vergelijken met de verwachte waarde. Deze methoden worden hieronder weergegeven.

De onderstaande tabel geeft een overzicht van de meest gebruikte bewering- en interactiemethoden in de twee frameworks.

Voorbeelden van methoden van de Robotium Sololes en de Android testkader

Voorbeelden van methoden van Robotium en Android testkader

De bovenstaande testsuite verifieert dat de grafische gebruikersinterface van de applicatie de tekst "Hello World!" weergeeft en een knop met de naam "Start" bevat.

STAP 3) Voer de test uit

Nadat je je testprogramma hebt geschreven, voer je de test uit met behulp van de onderstaande stappen.

  • Verbind een Android Sluit het apparaat aan op je pc, of start een emulator als er geen fysiek apparaat beschikbaar is.
  • Klik in je IDE met de rechtermuisknop op het testproject en kies 'Uitvoeren als' โ†’ Android Eenheidstest.

De onderstaande schermafbeelding toont het starten van de test vanuit de IDE.

Lancering van de Robotium testprogramma als een Android Unit testen vanuit de IDE

Het testprogramma uitvoeren

Naast het uitvoeren van de test vanuit de IDE, kunt u deze ook uitvoeren vanaf de commandoregel. In dit testprogramma is het testpakket com.example.helloandroid.testGebruik in een Linux-terminal de volgende opdracht om alle tests in dat pakket uit te voeren.

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

STAP 4) Testresultaat ophalen

Na de uitvoering van de test verzamel je de testresultaten.

In dit testprogramma worden vier testmethoden uitgevoerd. In de onderstaande run zijn alle testgevallen geslaagd.

Testresultaat met alle vier de resultaten Robotium testgevallen geslaagd

Testresultaatweergave wanneer alle testgevallen slagen

Als een testgeval mislukt, wordt de uitvoer weergegeven en kunt u zien welke testgevallen zijn mislukt.

Uitvoer van testresultaten met een lijst van de Robotium testgevallen die mislukt zijn

Testresultaatweergave wanneer een testgeval mislukt

Bron Code Voorbeelden

Dit artikel bevat voorbeelden van broncode die u helpen de handleiding beter te volgen en de technische details snel te begrijpen.

Als je wilt vergelijken Robotium Bekijk voor de andere opties in deze categorie de volgende testen van mobiele applicaties gids, de Appium zelfstudie en de samenvatting van testtools voor mobiele apps.

Veelgestelde vragen

Robotium Versie 5.6.3 blijft de laatst gepubliceerde release en de actieve ontwikkeling is jaren geleden gestopt. Het framework werkt nog steeds en het artefact is nog steeds beschikbaar op Maven Central, maar nieuwe versies zijn niet meer beschikbaar. Android projecten kiezen normaal gesproken Espresso, welke Google handhaaft.

Robotium Het is een black-box framework dat zich tijdens de uitvoering aan widgets koppelt en weinig kennis van de broncode nodig heeft. Espresso is Google's is een white-box tool die synchroniseert met de UI-thread en toegang tot de applicatiecode verwacht.

Robotium Het voert slechts รฉรฉn applicatie tegelijk uit, kan Flash of webinhoud buiten een WebView niet betrouwbaar verwerken, biedt geen ingebouwde opnamefunctie in de open-source JAR en de afhankelijkheid van verouderde instrumentatieklassen bemoeilijkt moderne toepassingen. Gradle bouwt.

Verklaren androidTestImplementation 'com.jayway.android.robotium:robotium-solo:5.6.3' in het module build-bestand, of verwijder de robotium-solo JAR om in libs en ernaar verwijzen als een bestandsafhankelijkheid.

Ja. Robotium De tests zijn standaard instrumentatietests, dus dezelfde APK draait op een emulator of een fysiek toestel. Echte hardware heeft de voorkeur voor gebaren-, sensor- en prestatietests, waarbij de timing van de emulator kan afwijken.

Robotium Het is geschikt voor functionele, systeem- en gebruikersacceptatietests op UI-niveau. Het is geen vervanging voor unit tests, die sneller op de JVM draaien, noch voor de bredere testomgeving. soorten softwaretesten een release is nog nodig.

Machine learning wordt gebruikt voor zelfherstellende locators die lay-outwijzigingen overleven, visuele vergelijkingen die renderingregressies signaleren en onbetrouwbare testdetectie die herhalingen rangschikt. De tools verminderen het onderhoud, maar een mens beslist nog steeds welk gedrag belangrijk is.

GitHub-copiloot Kan de setup-, teardown- en assertiemethoden van Solo vanuit een activiteitsklasse structureren. RevBekijk de suggestie zorgvuldig, want deze kan leiden tot verouderde pakketimporten of beweringen waaraan de app nooit voldoet.

Vat dit bericht samen met: