zoukankan      html  css  js  c++  java
  • Robotium的使用有源码的情况

    最近开始了解RobotiumRobotiumandroid的自动化框架,里面封装了很多api,方便我们使用。下面是我实践的结果,记录了其中出现过的问题,便于以后自己查阅。网上出现的很多是官方的demo,如果找不到,其实也可以用自己写的android小程序进行练习。

    一.提前准备

       1.robotium-solo-5.3.1.jar

       2.android模拟器或真机

       3.android sdk配置 platform-toolstools

    二.建立一个android test project

       1.点击File——new——android test project

       2.输入项目名

       3.这里有2个选择,点击第二个,选中你要测试的项目

       4.点击next,选择sdk,点击完成

       5.此时的包是空的,建立一个测试类,new——junit test case。

         Robotium的测试类ActivityInstrumentationTestCase2继承了junit3的TestCase类

    三.实现代码,这里以官方demo为例

    package com.example.android.notepad.test;
    
    
    import com.example.android.notepad.NotesList;
    import com.robotium.solo.Solo;
    import android.test.ActivityInstrumentationTestCase2;
    
    public class Robotiumtest extends ActivityInstrumentationTestCase2<NotesList> {
        private Solo solo;
        public Robotiumtest() {
            //NotesList是Demo中启动时的activity
            super(NotesList.class);
    
        }
    
        protected void setUp() throws Exception {
            
            solo=new Solo(getInstrumentation(),getActivity());
        }
    
        protected void tearDown() throws Exception {
            //每执行一个case就关闭全部的activity
            solo.finishOpenedActivities();
        }
        
        
        //添加
        public void testAddNote(){
            //阻止锁屏
            solo.unlockScreen();
            //点击菜单
            solo.clickOnMenuItem("Add note");
            //添加断言,判断当前的activity
            solo.assertCurrentActivity("Expected NoteEditor activity", "NoteEditor"); 
            //在文本框中输入Note1
            solo.enterText(0, "Note1");
            //返回之前的activity
            solo.goBack();
            
            //再次添加一个Note2
            solo.clickOnMenuItem("Add note");    
            solo.enterText(0, "Note2");
            solo.sleep(2000);
            solo.goBackToActivity("NotesList");
            
            boolean expected=true;
           //搜索当前页的文本内容,判断是否存在Note1和Note2
            boolean actual=solo.searchText("Note1")&&solo.searchText("Note2");
            assertEquals("Note1或Note2不存在", expected, actual);    
            
        }
    
        //编辑
        public void testEditNote(){
            //点击列表的第二项
            solo.clickInList(2);
            //控制屏幕是横屏还是竖屏
            solo.setActivityOrientation(Solo.LANDSCAPE);
            solo.clickOnMenuItem("Edit title");
            solo.enterText(0,"test");
            solo.sleep(2000);
            solo.goBack();
            solo.sleep(2000);
            
        }
        
        //删除
        public void testRemoveNote(){    
            //正则判断
            solo.clickOnText("(?i).*?note1.*");
            //solo.clickOnText("Note1test");
            solo.clickOnMenuItem("Delete");
            
            //长按Note2
            solo.clickLongOnText("Note2");
            solo.clickOnText("Delete");
            solo.sleep(5000);
            boolean noteFound = solo.waitForText("Note2", 1, 5000);
    
            assertFalse("Note 2 is found", noteFound);
        }
    
    }

    四.遇到的问题

      问题:执行用例时,一直报错:class not found :com.robotium.solo.Solo

      解决方法:1.右击build path,在order and export中,勾选你导入的robotium-solo-5.3.1.jar包

                    2.在菜单栏的project中点击clean,ok

       

  • 相关阅读:
    web前端技术社区分享
    programming-challenges Shoemaker&#39;s Problem (110405) 题解
    caffe 训练測试自己的数据集
    BootStrap有用代码片段(持续总结)
    H5学习_番外篇_PHP数据库操作
    WPF-MVVM-Demo
    android Toast大全(五种情形)建立属于你自己的Toast
    Java
    记一次死锁问题的排查和解决
    一步一步跟我学习lucene(19)---lucene增量更新和NRT(near-real-time)Query近实时查询
  • 原文地址:https://www.cnblogs.com/wyfly/p/4587769.html
Copyright © 2011-2022 走看看