`

robotium 初体验

 
阅读更多

robotium 进行android自动化测试初体验,本文包含的内容:

一,只有APK,没有源码的情况下robotium测试:

二 有待测试apk的源码测试:

robotium网址:  http://code.google.com/p/robotium/

 

 

一,只有APK,没有源码的情况下robotium测试:

1)确保apk是debug签名;

      下载re-sign.jar,下载地址:http://www.troido.de/re-sign.jar;下载之后双击jar,拖拽apk到上面根据提示操作即可的到myApp_debug.apk;同时也会得到包名等信息;

2)新建测试工程;

   (1)新建工程,选择  Android Test Project ;

   (2)Test Target 选择“This Project”:

   (3)包名写同测试的apk同样的包名,或者加上.test 均可;

     例如,待测试的apk包名是 com.myapk ,则测试工程的包名可以是com.myapk  或者 com.myapk.tset

 3)加载 robotium-solo-2.1.jar;

      Download Robotium jar from http://code.google.com/p/robotium/downloads/list

 4)写测试类;

   如下:

[java] view plaincopy
 
  1. package com.trunk.ticket.act.test;  
  2.   
  3. import com.jayway.android.robotium.solo.Solo;  
  4.   
  5. import android.test.ActivityInstrumentationTestCase2;  
  6.   
  7. public class TestApk extends ActivityInstrumentationTestCase2 {  
  8.     private static final String TARGET_PACKAGE_ID = "com.trunk.ticket.act";  
  9.     private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME = "com.trunk.ticket.act.MainActivity";  
  10.     private static Class launcherActivityClass;  
  11.   
  12.     static {  
  13.         try {  
  14.             launcherActivityClass = Class  
  15.                     .forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME);  
  16.         } catch (ClassNotFoundException e) {  
  17.             throw new RuntimeException(e);  
  18.         }  
  19.     }  
  20.   
  21.     public TestApk() throws ClassNotFoundException {  
  22.         super(TARGET_PACKAGE_ID, launcherActivityClass);  
  23.     }  
  24.   
  25.     private Solo solo;  
  26.   
  27.     @Override  
  28.     protected void setUp() throws Exception {  
  29.         solo = new Solo(getInstrumentation(), getActivity());  
  30.     }  
  31.   
  32.     /* 
  33.      * 我的测试函数 
  34.      */  
  35.     public void testDisplayBlackBox() { // Enter any integer/decimal value for  
  36.                                         // first editfield, we are writing 10  
  37.         solo.enterText(0"10"); // Enter any interger/decimal value for first  
  38.                                     // editfield, we are writing 20  
  39.         solo.clickOnButton("查询");  
  40.         // Verify that resultant of 10 x 20  
  41. //      assertTrue(solo.searchText("200"));  
  42.     }  
  43.   
  44.   
  45.     @Override  
  46.     public void tearDown() throws Exception {  
  47.         try {  
  48.             solo.finalize();    //Robotium will finish all the activities that have been open  
  49.         } catch (Throwable e) {  
  50.             e.printStackTrace();  
  51.         }  
  52.         getActivity().finish();  
  53.         super.tearDown();  
  54.     }   
  55. }  



 

     5)修改AndroidManifest.xml文件

 <instrumentation android:targetPackage="com.myapk" android:name="android.test.InstrumentationTestRunner" />
   instrumentation android:targetPackage 必须是待测试的包。

 

    在手机上安装待测试的apk,然后Run As AndroidJUnit Test 即可。

   参考资料:http://code.google.com/p/robotium/wiki/RobotiumForAPKFiles

二 有待测试apk的源码测试:

  1) 新建测试工程,同上,在选择Test Target 的时候选择待测试工程:

  其它信息会默认写好,点击 “Finish”即可。

2)写测试类

如下:

[java] view plaincopy
 
  1. /* 
  2.  * This is an example test project created in Eclipse to test NotePad which is a sample  
  3.  * project located in AndroidSDK/samples/android-9/NotePad 
  4.  * Just click on File --> New --> Project --> Android Project --> Create Project from existing source and 
  5.  * select NotePad. 
  6.  *  
  7.  * Then you can run these test cases either on the emulator or on device. You right click 
  8.  * the test project and select Run As --> Run As Android JUnit Test 
  9.  *  
  10.  * @author Renas Reda, renas.reda@jayway.com 
  11.  *  
  12.  */  
  13.   
  14. package com.mytest.app.test;  
  15.   
  16. import com.mytest.app.test.MainActivity;  
  17. import com.jayway.android.robotium.solo.Solo;  
  18. import android.test.ActivityInstrumentationTestCase2;  
  19. import android.test.suitebuilder.annotation.Smoke;  
  20. import android.util.Log;  
  21.   
  22.   
  23. public class MyTest extends ActivityInstrumentationTestCase2<MainActivity>{  
  24.       
  25.     private Solo solo;  
  26.   
  27.     public MyTest() {  
  28.         super("com.mytest.app", MainActivity.class);  
  29.     }  
  30.       
  31.      public void setUp() throws Exception {  
  32.          solo = new Solo(getInstrumentation(), getActivity());  
  33.           }  
  34.   
  35.      /* 
  36.       * 我的测试函数 
  37.       */  
  38.      @Smoke  
  39.      public void testAddNote() throws Exception {  
  40.          solo.clickOnMenuItem("Add note");  
  41.          solo.enterText(0"Note 2"); //In text field 0, add Note 2  
  42.          solo.goBackToActivity("NotesList"); //Go back to first activity named "NotesList"  
  43.          boolean expected = true;  
  44.          boolean actual = solo.searchText("Note 1") && solo.searchText("Note 2");  
  45.          assertEquals("Note 1 and/or Note 2 are not found", expected, actual); //Assert that Note 1 & Note 2 are found  
  46.           
  47.      }  
  48.   
  49.   
  50.     @Override  
  51.     public void tearDown() throws Exception {  
  52.         try {  
  53.             solo.finalize();    //Robotium will finish all the activities that have been open  
  54.         } catch (Throwable e) {  
  55.             e.printStackTrace();  
  56.         }  
  57.         getActivity().finish();  
  58.         super.tearDown();  
  59.     }   
  60. }  


3)AndroidManifest.xml 文件已经自动配置好,不用做修改,直接运行即可;

http://blog.csdn.net/actual_/article/details/7083093

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics