【Android自动化测试之Robotium】02. Robotium之用例分析
来源:互联网 发布:2017软件退税政策 编辑:程序博客网 时间:2024/05/01 08:25
学习网址 :http://www.robotium.cn/
如果大家配置好了Robotium的测试环境,那么开始吧(这里只介绍有源码的情况,没有源码也是可以做的)
被测应用下载:http://download.csdn.net/detail/wirelessqa/4487252
测试代码 (只贴出MainActivity和GridView,用例很简单就不多作注释了)
大家可以对照着Athrun的用例来看看两个框架的区别
- package org.onceler.robotium.test;
- import java.util.ArrayList;
- import org.athrun.android.app.MainActivity;
- import org.athrun.android.app.R;
- import org.athrun.android.app.ScrollActivity;
- import android.test.ActivityInstrumentationTestCase2;
- import android.test.suitebuilder.annotation.Smoke;
- import android.util.Log;
- import android.view.KeyEvent;
- import android.view.View;
- import android.widget.TextView;
- import com.jayway.android.robotium.solo.Solo;
- public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActivity>{
- private Solo solo;
- private TextView tv;
- private static final String TAG = "robotium_test";
- public MainActivityTest() {
- super("org.athrun.android.app", MainActivity.class);
- }
- public void setUp() throws Exception {
- solo = new Solo(getInstrumentation(), getActivity());
- }
- @Override
- public void tearDown() throws Exception {
- //Robotium will finish all the activities that have been opened
- solo.finishOpenedActivities();
- }
- @Smoke
- public void testWaitForActivity(){
- solo.assertCurrentActivity("assert activity err", MainActivity.class);
- solo.assertCurrentActivity("assert activity err", "MainActivity");
- solo.assertCurrentActivity("assert activity err", MainActivity.class, true);
- solo.assertCurrentActivity("assert activity err", "MainActivity", true);
- solo.clickOnButton("ScrollView");
- solo.assertCurrentActivity("assert activity err", ScrollActivity.class);
- solo.goBack();
- solo.clickOnButton(4);
- solo.assertCurrentActivity("assert activity err", "ScrollActivity");
- solo.goBackToActivity("MainActivity");
- solo.assertCurrentActivity("assert activity err", "MainActivity", true);
- }
- @Smoke
- public void testFindElementInTree(){
- ArrayList<View> list = solo.getViews(solo.getView(R.id.include_checkbox));
- tv = (TextView)list.get(2);
- assertEquals("default text",tv.getText());
- solo.clickOnCheckBox(0);
- tv = (TextView)list.get(2);
- assertEquals("CheckBox is checked!",tv.getText());
- }
- public void testFindViewByIdDirect() {
- //通过ID得到view
- tv = (TextView)solo.getView(R.id.textview);
- assertEquals("default text",tv.getText());
- solo.clickOnCheckBox(0);
- tv = (TextView)solo.getView(R.id.textview);
- assertEquals("CheckBox is checked!",tv.getText());
- }
- public void testLongClick(){
- //ImageView iv = (ImageView)solo.getView(R.id.my_imageview);
- solo.clickLongOnView(solo.getView(R.id.my_imageview));
- //这个TOAST提示捕获不到,不知道哪里有问题,知道的朋友可以跟我说一下
- // assertEquals(true,solo.waitForText("LongClick"));
- }
- public void testPressMenu(){
- solo.clickOnMenuItem("Toast");
- //这个TOAST跟上面的一样,这个确是成功的。OH MY GOD,这是为何
- assertEquals(true,solo.waitForText("Hello World"));
- }
- public void testPressHome(){
- solo.sendKey(KeyEvent.KEYCODE_HOME);
- solo.sleep(2000);
- }
- public void testPressBack(){
- solo.clickOnButton("ScrollView");
- solo.clickOnButton("Bottom Button");
- solo.sendKey(KeyEvent.KEYCODE_BACK);
- solo.assertCurrentActivity("assert activity err", "MainActivity");
- }
- public void testFindViewByText(){
- solo.clickOnButton("ListView");
- solo.clickLongOnText("Item35");
- solo.clickOnText("Item One");
- assertTrue(solo.waitForText("1 pressed!"));
- }
- public void testScrollListInDialog(){
- solo.clickOnMenuItem("Dialog With List");
- solo.clickOnText("Item9");
- assertTrue(solo.waitForText("Item 9 clicked!"));
- solo.clickOnButton("OK");
- assertTrue(solo.waitForText("Botton OK in dialog with list is pressed!"));
- }
- public void testSetScreen() {
- solo.setActivityOrientation( Solo.LANDSCAPE);
- solo.setActivityOrientation(Solo.PORTRAIT);
- solo.sleep(2000);
- }
- public void testGetStringById(){
- solo.clickOnButton("ScrollView");
- assertTrue(solo.getString(R.string.scroll_text).toString().contains("道可道"));
- }
- public void testRequestFocus(){
- //好像没有直接获得焦点的方法,所以。。慢慢移动吧
- }
- public void testSlide(){
- //gallery的操作方法没有
- //左右滑动用 solo.scrollToSide(Solo.LEFT);
- }
- public void testGetChildCount(){
- Log.i(TAG, String.valueOf(solo.getViews().size())); //所有的VIEW数量
- Log.i(TAG, String.valueOf(solo.getViews(solo.getView(R.id.mainroot)).size()));//LinearLayout下的VIEW数量
- Log.i(TAG, String.valueOf(solo.getViews(solo.getView(R.id.my_gallery)).size()));//GALLERY下的VIEW数量
- }
- }
GridView
- package org.onceler.robotium.test;
- import org.athrun.android.app.GridViewActivity;
- import org.athrun.android.app.ListViewActivity;
- import android.test.ActivityInstrumentationTestCase2;
- import com.jayway.android.robotium.solo.Solo;
- public class GridViewActivityTest extends ActivityInstrumentationTestCase2<GridViewActivity>{
- private Solo solo;
- private static final String TAG = "robotium_test";
- public GridViewActivityTest() {
- super("org.athrun.android.app", GridViewActivity.class);
- }
- public void setUp() throws Exception {
- solo = new Solo(getInstrumentation(), getActivity());
- }
- @Override
- public void tearDown() throws Exception {
- //Robotium will finish all the activities that have been opened
- solo.finishOpenedActivities();
- }
- public void testGetChildByIndex(){
- // solo.clickOnText("Item.0");
- solo.clickOnImage(0);
- assertTrue(solo.waitForText("Item 0 is clicked!"));
- solo.assertCurrentActivity("current activity is not ListViewActivity", ListViewActivity.class);
- }
- public void testGetChildByIndexMixed(){
- solo.clickOnText("Item.19");
- assertTrue(solo.waitForText("Item 19 is clicked!"));
- solo.sleep(1000);
- //接下来没有办法直接获得哪一行的TEXT,ATHRUN就可以
- //所以只能通过INDEX来查找
- solo.getText(40); //这个有问题,被测应用的问题
- //移动到第20行可以像下面这样OH MY GOD,好慢
- // for(int i = 0;i<21;i++){
- // solo.sendKey(Solo.DOWN);
- // }
- }
- }
- 【Android自动化测试之Robotium】02. Robotium之用例分析
- 【Android自动化测试之Robotium】02. Robotium之用例分析
- 【Android自动化测试之Robotium】02. Robotium之用例分析
- 【Android自动化测试之Robotium】02. Robotium之用例分析
- 【Android自动化测试之Robotium】02. Robotium之用例分析
- Android自动化测试之Robotium 用例分析
- Android自动化测试之Robotium<二>:用例分析
- Android自动化测试之robotium
- Android自动化测试之Robotium登陆测试用例
- Android测试之Robotium自动化测试框架
- 【Android自动化测试之Robotium】01. Robotium环境配置
- 【Android自动化测试之Robotium】01. Robotium环境配置
- android自动化测试之robotium初探
- Android自动化测试之Robotium项目创建
- Android自动化测试之Robotium导包
- Robotium自动化测试之签名
- android自动化测试之用robotium实现微博绑定
- android自动化测试之用robotium实现微博绑定
- Unite2013开发者大会:Unity新增多项重磅革新
- java web从零单排第二期之《html表单基础介绍》
- (读书笔记).NET大局观-.NET框架类库概观
- 单链表实现约瑟夫环示例
- 最大全1矩阵元素数
- 【Android自动化测试之Robotium】02. Robotium之用例分析
- js获取地址栏url以及获取url参数
- poj_3735_Training little cats(矩阵快速幂)
- MAC OS X下安装Eclipse的SVN插件。
- OCP-1Z0-051-V9.02-14题
- android解锁屏时Activity生命周期的变化
- selenium+testng+reprotng+ant框架搭建配置
- QTimeLine学习
- sap,一句话入门