今天突然对Android的自动化测试有点儿感兴趣,google了下,发现自动化测试的工具还真不少,有Monkey,MonkeyRunner,Robotium等太多了,前段时间也看到了 风泊海上 写的《Android自动化测试之Robotium学习》的博文,呵呵感觉也不错,但是我自己也喜欢自己总结,做下笔记哈。

    Robotium工具下载,目前的最新版本是3.4.1  可以到这里下载 http://code.google.com/p/robotium/  

    

Android自动化测试学习之robotium笔记_第1张图片

 下载完成后,可以看到如下

Android自动化测试学习之robotium笔记_第2张图片

 

 

将ExampleTestProject_v3.4.1.zip导入到eclipse中,可以看到有两个多了两个项目。NotepadTest是测试项目,测试Notepad的,我们可以直接运行Android JUnit Test 查看运行效果,即可以看到模拟器上面正在自动测试。

 

Android自动化测试学习之robotium笔记_第3张图片

 

现在我们自己一步步的完整的写个程序进行自动化测试。

1、首先创建一个hellorobotium的project,里面内容简单,只需要一个输入框,和一个按钮即可。逻辑代码直接下载源码看。如下图

 

Android自动化测试学习之robotium笔记_第4张图片

2、现在开始创建测试项目。右击新建,找到Android Test Project

6

然后选中下一步,填写Project name,自己随便取,然后在下一步选择要测试的项目即可。

 

Android自动化测试学习之robotium笔记_第5张图片

3、创建完成后,添加robotium-solo-3.4.1.jar,如下图所示

 

Android自动化测试学习之robotium笔记_第6张图片

4、开始编写测试类(Test)

 

   
   
   
   
  1. package com.xzw.test; 
  2.  
  3. import com.jayway.android.robotium.solo.Solo; 
  4. import com.xzw.example.EditorActivity; 
  5.  
  6. import android.test.ActivityInstrumentationTestCase2; 
  7.  
  8. public class Test extends ActivityInstrumentationTestCase2
  9.     private Solo solo; 
  10.   
  11.     public Test(){  
  12.         super(EditorActivity.class); 
  13.     }  
  14.      
  15.     @Override 
  16.     protected void setUp() throws Exception { 
  17.         //setUp() is run before a test case is started.  
  18.         //This is where the solo object is created. 
  19.          solo = new Solo(getInstrumentation(), getActivity()); 
  20.     } 
  21.      
  22.     @Override 
  23.     protected void tearDown() throws Exception { 
  24.         //tearDown() is run after a test case has finished.  
  25.         //finishOpenedActivities() will finish all the activities that have been opened during the test execution. 
  26.          solo.finishOpenedActivities(); 
  27.     } 
  28.       
  29.     /** 
  30.      * 测试点击事件 
  31.      */ 
  32.     public void testClick(){  
  33.          
  34.         solo.assertCurrentActivity("进入EditorActivity""EditorActivity"); 
  35.         try { 
  36.             Thread.sleep(1000); //休息1秒 
  37.         } catch (InterruptedException e) {  
  38.             e.printStackTrace(); 
  39.         } 
  40.          
  41.         solo.clickOnEditText(0); //点击输入框 
  42.          
  43.         try { 
  44.             Thread.sleep(1000); //休息1秒 
  45.         } catch (InterruptedException e) { 
  46.             // TODO Auto-generated catch block 
  47.             e.printStackTrace(); 
  48.         } 
  49.          
  50.         solo.enterText(0"xzw");  //往第一个EditText,输入文本。第一个为0 
  51.          
  52.         solo.clickOnButton("Click");  //点击按钮 
  53.          
  54.         solo.takeScreenshot(); //屏幕截图,并保存到 "/sdcard/Robotium-Screenshots/". 
  55.         boolean expected = true
  56.         boolean actual = solo.searchText("xx"); //查找含有xx字符的text,如果没有则返回false 
  57.          //验证预期结果 
  58.         assertEquals("xx is not found", expected, actual);  
  59.     } 

5、运行android junit test查看运行结果。

 

Android自动化测试学习之robotium笔记_第7张图片

    嘿嘿,搞定是不是很简单啊。 

    欢迎大家一起学习交流。