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个选择,点击第二个,选中你要测试的项目

Robotium的使用-有源码的情况

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

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

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

Robotium的使用-有源码的情况

三.实现代码,这里以官方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

   

 

你可能感兴趣的:(robot)