标签:
最近开始了解Robotium,Robotium是android的自动化框架,里面封装了很多api,方便我们使用。下面是我实践的结果,记录了其中出现过的问题,便于以后自己查阅。网上出现的很多是官方的demo,如果找不到,其实也可以用自己写的android小程序进行练习。
一.提前准备
1.robotium-solo-5.3.1.jar
2.android模拟器或真机
3.android sdk配置 platform-tools和tools
二.建立一个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
标签:
原文地址:http://www.cnblogs.com/wyfly/p/4587769.html