【Android自动化测试之Robotium】02. Robotium之用例分析

这篇文章写的很好, 有时间玩玩。

如果大家配置好了Robotium的测试环境,那么开始吧(这里只介绍有源码的情况,没有源码也是可以做的)

被测应用下载:http://download.csdn.net/detail/wirelessqa/4487252


测试代码 (只贴出MainActivity和GridView,用例很简单就不多作注释了)

大家可以对照着Athrun的用例来看看两个框架的区别


[java] view plain copy
  1. package org.onceler.robotium.test;  
  2.   
  3. import java.util.ArrayList;  
  4.   
  5. import org.athrun.android.app.MainActivity;  
  6. import org.athrun.android.app.R;  
  7. import org.athrun.android.app.ScrollActivity;  
  8.   
  9. import android.test.ActivityInstrumentationTestCase2;  
  10. import android.test.suitebuilder.annotation.Smoke;  
  11. import android.util.Log;  
  12. import android.view.KeyEvent;  
  13. import android.view.View;  
  14. import android.widget.TextView;  
  15.   
  16. import com.jayway.android.robotium.solo.Solo;  
  17.   
  18. public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActivity>{  
  19.     private Solo solo;  
  20.     private TextView tv;  
  21.     private static final String TAG = "robotium_test";  
  22.   
  23.     public MainActivityTest() {  
  24.         super("org.athrun.android.app", MainActivity.class);  
  25.   
  26.     }  
  27.   
  28.     public void setUp() throws Exception {  
  29.         solo = new Solo(getInstrumentation(), getActivity());  
  30.     }  
  31.       
  32.     @Override  
  33.     public void tearDown() throws Exception {  
  34.         //Robotium will finish all the activities that have been opened  
  35.         solo.finishOpenedActivities();  
  36.     }  
  37.       
  38.     @Smoke  
  39.     public void testWaitForActivity(){  
  40.         solo.assertCurrentActivity("assert activity err", MainActivity.class);  
  41.         solo.assertCurrentActivity("assert activity err""MainActivity");  
  42.         solo.assertCurrentActivity("assert activity err",  MainActivity.classtrue);  
  43.         solo.assertCurrentActivity("assert activity err""MainActivity"true);  
  44.           
  45.         solo.clickOnButton("ScrollView");  
  46.         solo.assertCurrentActivity("assert activity err", ScrollActivity.class);  
  47.           
  48.         solo.goBack();  
  49.         solo.clickOnButton(4);  
  50.         solo.assertCurrentActivity("assert activity err""ScrollActivity");  
  51.         solo.goBackToActivity("MainActivity");  
  52.         solo.assertCurrentActivity("assert activity err""MainActivity"true);  
  53.     }  
  54.       
  55.     @Smoke  
  56.     public void testFindElementInTree(){      
  57.         ArrayList<View> list = solo.getViews(solo.getView(R.id.include_checkbox));  
  58.         tv = (TextView)list.get(2);  
  59.         assertEquals("default text",tv.getText());  
  60.           
  61.         solo.clickOnCheckBox(0);  
  62.         tv = (TextView)list.get(2);  
  63.         assertEquals("CheckBox is checked!",tv.getText());  
  64.     }  
  65.       
  66.     public void testFindViewByIdDirect() {  
  67.         //通过ID得到view  
  68.         tv = (TextView)solo.getView(R.id.textview);  
  69.         assertEquals("default text",tv.getText());  
  70.           
  71.         solo.clickOnCheckBox(0);  
  72.           
  73.         tv = (TextView)solo.getView(R.id.textview);       
  74.         assertEquals("CheckBox is checked!",tv.getText());  
  75.     }  
  76.       
  77.     public void testLongClick(){  
  78.         //ImageView iv = (ImageView)solo.getView(R.id.my_imageview);  
  79.         solo.clickLongOnView(solo.getView(R.id.my_imageview));  
  80.         //这个TOAST提示捕获不到,不知道哪里有问题,知道的朋友可以跟我说一下  
  81.     //  assertEquals(true,solo.waitForText("LongClick"));  
  82.     }  
  83.       
  84.     public void testPressMenu(){  
  85.         solo.clickOnMenuItem("Toast");  
  86.         //这个TOAST跟上面的一样,这个确是成功的。OH MY GOD,这是为何  
  87.         assertEquals(true,solo.waitForText("Hello World"));  
  88.     }  
  89.       
  90.     public void testPressHome(){  
  91.         solo.sendKey(KeyEvent.KEYCODE_HOME);  
  92.         solo.sleep(2000);  
  93.     }  
  94.       
  95.     public void testPressBack(){  
  96.         solo.clickOnButton("ScrollView");  
  97.         solo.clickOnButton("Bottom Button");  
  98.         solo.sendKey(KeyEvent.KEYCODE_BACK);  
  99.         solo.assertCurrentActivity("assert activity err""MainActivity");  
  100.     }  
  101.       
  102.     public void testFindViewByText(){  
  103.         solo.clickOnButton("ListView");  
  104.         solo.clickLongOnText("Item35");  
  105.         solo.clickOnText("Item One");  
  106.         assertTrue(solo.waitForText("1 pressed!"));  
  107.     }  
  108.       
  109.     public void testScrollListInDialog(){  
  110.         solo.clickOnMenuItem("Dialog With List");  
  111.         solo.clickOnText("Item9");  
  112.         assertTrue(solo.waitForText("Item 9 clicked!"));  
  113.         solo.clickOnButton("OK");  
  114.         assertTrue(solo.waitForText("Botton OK in dialog with list is pressed!"));  
  115.     }  
  116.       
  117.     public void testSetScreen() {  
  118.         solo.setActivityOrientation( Solo.LANDSCAPE);  
  119.         solo.setActivityOrientation(Solo.PORTRAIT);  
  120.         solo.sleep(2000);         
  121.     }  
  122.       
  123.     public void testGetStringById(){  
  124.         solo.clickOnButton("ScrollView");  
  125.         assertTrue(solo.getString(R.string.scroll_text).toString().contains("道可道"));  
  126.     }  
  127.       
  128.       
  129.     public void testRequestFocus(){       
  130.         //好像没有直接获得焦点的方法,所以。。慢慢移动吧     
  131.     }  
  132.       
  133.     public void testSlide(){  
  134.         //gallery的操作方法没有  
  135.         //左右滑动用 solo.scrollToSide(Solo.LEFT);         
  136.     }  
  137.   
  138.     public void testGetChildCount(){  
  139.         Log.i(TAG, String.valueOf(solo.getViews().size())); //所有的VIEW数量  
  140.         Log.i(TAG, String.valueOf(solo.getViews(solo.getView(R.id.mainroot)).size()));//LinearLayout下的VIEW数量  
  141.         Log.i(TAG, String.valueOf(solo.getViews(solo.getView(R.id.my_gallery)).size()));//GALLERY下的VIEW数量  
  142.     }  
  143.   
  144. }  

GridView


[java] view plain copy
  1. package org.onceler.robotium.test;  
  2.   
  3. import org.athrun.android.app.GridViewActivity;  
  4. import org.athrun.android.app.ListViewActivity;  
  5.   
  6. import android.test.ActivityInstrumentationTestCase2;  
  7.   
  8. import com.jayway.android.robotium.solo.Solo;  
  9.   
  10. public class GridViewActivityTest extends ActivityInstrumentationTestCase2<GridViewActivity>{  
  11.     private Solo solo;  
  12.     private static final String TAG = "robotium_test";  
  13.     public GridViewActivityTest() {  
  14.         super("org.athrun.android.app", GridViewActivity.class);  
  15.   
  16.     }  
  17.   
  18.     public void setUp() throws Exception {  
  19.         solo = new Solo(getInstrumentation(), getActivity());  
  20.     }  
  21.       
  22.     @Override  
  23.     public void tearDown() throws Exception {  
  24.         //Robotium will finish all the activities that have been opened  
  25.         solo.finishOpenedActivities();  
  26.     }  
  27.       
  28.     public void testGetChildByIndex(){  
  29. //      solo.clickOnText("Item.0");  
  30.         solo.clickOnImage(0);  
  31.         assertTrue(solo.waitForText("Item 0 is clicked!"));  
  32.         solo.assertCurrentActivity("current activity is not ListViewActivity", ListViewActivity.class);  
  33.     }  
  34.       
  35.     public void testGetChildByIndexMixed(){  
  36.         solo.clickOnText("Item.19");  
  37.         assertTrue(solo.waitForText("Item 19 is clicked!"));  
  38.         solo.sleep(1000);  
  39.         //接下来没有办法直接获得哪一行的TEXT,ATHRUN就可以  
  40.         //所以只能通过INDEX来查找  
  41.         solo.getText(40); //这个有问题,被测应用的问题  
  42.         //移动到第20行可以像下面这样OH MY GOD,好慢  
  43. //      for(int i = 0;i<21;i++){  
  44. //          solo.sendKey(Solo.DOWN);  
  45. //      }  
  46.               
  47.     }  
  48.   

你可能感兴趣的:(【Android自动化测试之Robotium】02. Robotium之用例分析)