Getting Started with Robotium – The Most Popular Android Application UI Testing Tool

Robotium is the android test automation framework for testing native and hybrid android applications. It provides simple API to write UI automation scripts. However, Number of tools are available for testing android applications, Robotium is the most commonly used Android testing tool.

Robotium can be used to write functional, system and user acceptance testcases. Robotium Testcases can be executed in Android emulator as well as the Android real device.

What is covered in this Robotium Tutorial:

  • Benefits
  • Prerequisites
  • Creating Robotium Project
  • Creating Robotium Class
  • Some Robotium Methods
  • Locating  Elements in Android application
  • Sample Code
  • Executing Robotium Project

Robotium tutorial

Further reading => Beginner’s Guide to Mobile Application Testing

Benefits of Robotium

  • Easy to write
  • Simple API (All Methods are available only in Solo Class)
  • Automatic Delays & Timings
  • No need to write code , when navigating from one activity to another activity.
  • Test Android native apps as well as hybrid app.
  • Able to handle multiple android activities.
  • Less time to write tests as the API is simple.
  • Testcases are Robust , due to runtime binding to UI components
  • Fast testcase execution.
  • Integrates easily with Maven and ANT.

Prerequisites

1) Download and Install JAVA
– Download Java from this page.
– Add java libraries to the PATH and set JAVA_HOME to the root of java installation directory in your environment.

2) Download ADT Bundle

  • Download ADT bundle from this page.
  • Extract ADT bundle zip and put it in a folder.
  • Set ANDROID_HOME to the root of ADT bundle folder in your Environment.

Creating a Robotium Project

Only few steps required to create a project,

Step #1: Open eclipse contains your android application to be tested.

(Click on image to enlarge)

robotium tutorial-1

Step #2: Right click on the android project -> Android Tools and click on new Test project.

Step #3: Give name for the Test project and click Next button.

robotium tutorial-2

Step #4: Select The Application under test as the target and click finish button.

robotium tutorial-3

Step #5: Test project will be created in the eclipse workspace.

Step #6: Download Robotium solo jar from here.

Step #7: Right click on the Test project in the workspace Go to Build path and click Configure build path.

Step #8: Switch to libraries tab, click on “Add external jars” option and browse the downloaded Robotium jar file and add it to the libraries and click “OK”.

robotium tutorial-4

Step #9: Robotium Test project is created successfully. Now we can create classes under the project and start writing the test cases.

Creating Robotium Class

#1: Right click on the package under src directory in the Test project, and create a new class.

#2: Import the Main Activity class the Robotium test project.
Syntax:

 import com.sasi.attendanceproject.Home; 

#3: New class will inherit properties from ActivityInstrumentationTestCase2 class

 
public class AttendanceTest extends
ActivityInstrumentationTestCase2 <home> 

(Note: Here, Home is the activity to be tested in the android application)

#4: Create Instance for Solo class as below

 private Solo solo; 

#5: Create a Constructor for the Test class, as below

public AttendanceTest() {
    super(Home.class);
    // TODO Auto-generated constructor stub

#6: Create setUp and tearDown methods , as below
Setup method is used to Initiate the Instrumentation

public void setUp()throws Exception
{
   solo=new Solo(getInstrumentation(), getActivity());
} 

Teardown method is used to close the activity after the test has been completed.

 public void tearDown() throws Exception
 { solo.finishOpenedActivities();
 } 

Some Robotium Methods

#1. assertCurrentActivity (text,Activity)
This method verifies whether the current activity is the activity which is passed as the send parameter.
Syntax

solo.assertCurrentActivity("Current Activity", Home.class);

#2. clickOnButton(text)
This method will click on the button with the specified Text.
Syntax:

solo.clickOnButton("ADMIN");

#3. clickOnButton(int)
This method will click on the button with the specified index.
Syntax:

solo.clickOnButton(2);

#4. waitForText(text)
This method will wait until the text appearing on the activity.
Syntax:

solo.waitForText("Creating New Password");

#5. enterText(int, text)
This method will type the text passed as the second parameter to the specified index editbox.
Syntax:

solo.enterText(0,"test");

#6. clickOnCheckbox(int)
This Method will click on the checkbox with given index.
Syntax:

solo.clickOnCheckBox(0);

#7. clickOnRadioButton(int)
This Method will click on the Radio button with the given index.
Syntax:

solo.clickOnRadioButton(1);

#8. clickOnImage(int)
This Method will click on the image with the given index.
Syntax:

solo.clickOnImage(1);

#9. clearEditText(int)
This Method will clear the text in the edit box with the given index.
Syntax:


solo.clearEditText(0);

#10. waitForText(text)
This Method will wait until the given text is appearing on the activity.
Syntax:

solo.waitForText(“Robotium”); 

Example Program

Locating Elements in Android Application

Step – 1
Open Eclipse containing Android Application to be Tested.

Step – 2
Expand the project , Go to res ? Layout folder and double click on the activity XML file, you want to automate. It will open the designed activity on the eclipse editor.

Step – 3
Locating Button Element

Locating Element By ID
Click on the Element , you want to locate. On the right side properties panel, you can find the ID of that element. (ignore @+id/)

(Click on image to enlarge)

robotium tutorial-5

In the Above figure ID of the element is, btnadmin.

Corresponding Robotium code to locate this button is,

solo.clickOnButton(R.id.btnadmin);

Locating Element By Position

robotium tutorial-6

In case, if ID is not available then you can locate the element using the order. If the button is in the second position, Then you can locate the button by,

solo.clickOnButton(1);

Locating Element By Text

robotium tutorial-7

Even you can click on the button using the text displayed on the button.

Solo.clickOnButton(“ADMIN”);

Locating Text box Element
Using Similar way click on the text box you want to enter data and find the position of the text box from the right side.

robotium tutorial-8

Solo.enterText(0,”Anitha”);
//Username textbox is in 1st position
Solo.enterText(1,”test”);  
//Password textbox is in 2nd position 

Locating a Radio Button Element
Click on the Radio Button Element , you want to click and find out the position of the radio button.

robotium tutorial-9

 Solo.clickOnRadioButton(1);
//It will location radio button in the second position. 

Sample Code

package com.sasi.attendanceproject.test;
import android.test.ActivityInstrumentationTestCase2;
import android.widget.EditText;

import com.robotium.solo.By;
import com.robotium.solo.Solo;
import com.robotium.solo.WebElement;
import com.sasi.attendanceproject.Home;

public class AttendanceTest extends ActivityInstrumentationTestCase2<Home>{
    private Solo solo;
    public AttendanceTest() {
        super("com.sasi.attendanceproject.Home",Home.class);
        // TODO Auto-generated constructor stub
    }

    public void setUp()throws Exception{
        solo=new Solo(getInstrumentation(),getActivity());
    }
    public void testAttendance()throws Exception{
        //solo.assertCurrentActivity("Current Activity", Home.class);
        solo.waitForWebElement(By.id("btnadmin"));
        solo.clickOnButton("ADMIN");
        solo.clickOnButton(0);
        solo.waitForText("Creating New Password");
        solo.enterText(0, "test");
        solo.enterText(1, "test");
        solo.clickOnButton("Okay");
        solo.waitForText("Attendance Login");
        solo.enterText(0, "Anitha");
        solo.enterText(1, "test");
        solo.clickOnButton("Login");
        solo.waitForWebElement(By.id("btnaddnew"));
        solo.clickOnButton("Add New Details");
        solo.waitForText("Enter the Employee Details");
        solo.enterText(0, "Anitha");
        solo.enterText(1, "6");
        solo.enterText(2, "Testing Engineer");
        solo.clickOnRadioButton(1);
        solo.clickOnButton("Okay");
        solo.waitForWebElement(By.id("tvempID"));
        System.out.println(solo.getText(0));

    }
    public void tearDown()throws Exception{
        solo.finishOpenedActivities();}}

Executing Robotium Project

From Eclipse:

Right click on the project and select Run As -> Android Junit Test

From Command Prompt:

Step 1:
Cd to your Android Test Project Directory

Step 2:
Run the following command,

 adb shell am instrument -w <<package name of your test
class>>/android.test.InstrumentationTestRunner 

robotium tutorial-10

Conclusion

  • Robotium is the most commonly used Android Test automation tool.
  • Robotium Testcases can be executed on Android Emulator as well as the Real device, we don’t need to write any specific configuration code to run Robotium test cases on Real device.
  • Robotium Can be easily written in maven project also, and it can be run through continuous integration tools.
  • Thus, Robotium is very useful in writing easy/simple Android Test automation scripts.

Recommended reading => 5 Mobile Testing Challenges and Solutions

About the author: This is a guest post by Anitha Eswari. She is currently working as a senior testing engineer with more than three years of extensive experience in web and mobile automation testing. She is having sound knowledge in various automation testing tools including mobile testing tools like Robotium and Appium.

Feel free to share your queries/experience in comments about the Robotium – the most popular Android UI testing tool.




Recommended reading

30 comments ↓

#1 Dwarika

Very nice post with a very descriptive description for any beginner.
Thank you!!

#2 Dwarika

Really nice post, thanks for posting it here !!

#3 Kimevu

this is a perfect android automation framework. we are using it for all our user interface automation tests.

#4 Niraj

excellent explain it really helps a lot.

#5 Siddhant Raut

Its kick to start Mobile Automation….
Easy to start for beginners….

most awaited for post happy to see it…..

thank you Anitha Eswari & Vijay.

#6 Anitha Eswari

@Dwarika – Thank you!!!

#7 Anitha Eswari

@Kimevu – Yes, you are correct, Robotium is a perfect automation framework for automating UI tests in Android Mobiles.

#8 Anitha Eswari

@Niraj – Thank you!! Keep reading my articles.

#9 Anitha Eswari

@Siddhant Raut – Thank you so much, Keep reading my articles.

#10 Nalini

Superb. Very good intro.

#11 simonbassey

Very helpful article. I have used your tutorial to be able to create a Test class that is able to test Activities for my Application, now my challenge is that i have both Activities and fragment Classes, how do i create test for that freagments ??

please help, tell me how to go abpout it ..

#12 Deb

Hi Anitha,

Thanks for sharing the good information about mobile automation testing.
Can you please tell me if somebody is providing online training on core java,robotium , monkey talk and appium.
I want to learn all these.

#13 Anitha Eswari

@simonbassey,

Hope this link will help you,

http://stackoverflow.com/questions/18647787/how-do-i-get-a-reference-to-a-fragment-from-within-a-unit-robotium-test

#14 Dhivya

Hi anitha, I have big doubt pls help!!! is that possible to automate the cache, performance related test cases. If it is so can u pls suggest me how to do that.

#15 Hari

Thanks for the post anita very helpful. Do you guys have any post related new google Express tool in android studio.

#16 Murali

HI Thanks for post,
i started for my project, but project is completely based on web-services including UI and data are dynamic so to identify a dynamic UI and data. I have check layout there is no images and data. so is any other way to identify the property’s of the dynamic UI & data

#17 Pavan

Any one provide training here for robotium?

#18 pavan T

Any one provide training here for robotium?

#19 Piyush

excellent description, really helped lot to start with Robotium test script

#20 Ssire

Is this robotium will handle android OS level objects like i want to click on settings and modify the my wifi connection.

#21 Arpit

awesome description about robotium, Thanks

#22 Mohanty

It is very much help full. Description is really good. Thank you very much.

#23 kk

Thanks a lot for the description. I am a beginner. I would like to know what level java knowledge is required in Robotium? please do answer.

#24 omg

“Open Eclipse containing Android Application to be Tested”
What the hell does this mean? Can you explain? I have an app to test and how can I open it in eclipse?

#25 Gaurav Khurana

Good one but whats the app we are going to test here. How we have attached the app (apk – android package kit).

Yet to give a try for the practical

#26 Shohag

What if i have two emulator running, what will be the command line and how do i identify multiple emulator. I want to run the same test case for multiple emulator.

#27 premkumar

hi
thanks for the post , can u tell me how to scroll up /down or swipe option in robotium

#28 prashnat

Really nice post……

#29 Jumana

Hi…i want to learn about automation testing..so i really dont know much about this..here Pre-requisities states to install java and include java libraries…did it mean eclipse..i don’t understand how this can be done..can u pls explain it

#30 Sanjat

Hi,
Can we use Robotium with Android Studio?
Is Robotium Test Recorder is free or licensed?
If YES, then how? Can please describe the steps?
Are the test scripts are generated automatically ot do we have to write those?

Leave a Comment