您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > robotium从不会到精通
一、Robotium简介Robotium是一个测试框架,能够方便你为Android应用程序编写强大、健壮的自动化黑盒测试用例。利用Robotium的支持,用例开发人员能够编写功能、系统和验收测试方案,跨越多个Androidactivities。Robotium支持Activities、Dialogs、Toasts、Menus和ContextMenus。Robotium自动化测试方法能够模仿普通用户行为,可以试着把一些原来由测试工程师做的测试变成Robotium自动化实现。Robotium提供下列好处1.以最小的应用程序知识,开发功能强大的测试案例。2.框架支持多个activities自动活动。3.最短的时间需求写出测试用例。4.测试案例的可读性比标准的仪器测试大大提高。5.通过运行时绑定GUI组件使测试用例更强大。6.执行测试用例速度快。7.顺利整合了Maven或Ant来运行测试,持续集成的一部分。8.该工具用于黑盒的自动化测试。可以在有源码或者只有APK的情况下对目标应用进行测试,提供了模仿用户操作行为的API,比如在某个控件上点击,输入Text等等。二、Robotium测试工程创建建立工程有两种:1、依赖工程建立:如notePadTest2、建立独立的测试工程,这样的工程需要将apk包重新签名,之后安装到模拟器或真机上。然后就可以运行了。确保环境1.已经安装eclipse2.Eclipse已经配置好android相关环境3.存在已经创建模拟器4.存在一个编译通过的被测工程这里以AndroidSDK/samples/android-9/NotePad为例:在Eclipse中导入该工程File--New--Project--AndroidProject--CreateProjectfromexistingsource--NotePad.步骤1.在官方down栏下下载所需要的jar包地址:创建一个TestProject1)打开eclipse,选择File-New-Project…-Android-AndroidTestProject,点击Next。2)在TestProjectName中输入测试工程的名称,如:NotePadTest。选择AnexistingAndroidProject,点击下一步。3)选择被测工程notePad。4)点击Finish按钮,一个新建的测试工程(NotePadTest)就创建好了。3.创建一个TestCase1)在NotePadTest-src-com.example.android.notepad.test上,右击选择New-JUnitTestCase,创建一个TestCase。2)在Name中输入TestCase的名字NotePadTest。3)Superclass改为android.test.ActivityInstrumentationTestCase2。4)选择创建setUp()、tearDown()和constructor后,点击Finish按钮。4.导入robotium.jar1)选择测试工程NotePadTest右击,选择BuildPath-ConfigureBuildPath…2)在打开的PropertiesforNotePadTest中点击AddExternalJARs…按钮。3)导入本机中的robotium-solo-2.2.jar文件,在buildpath中,OrderandExport,勾选robotium的两个jar包在击OK按钮。5.修改javaCompiler1)选择测试工程NotePadTest右击,选择Properties-javaCompiler-Enableprojectspecificsettings。Compilercomplicancelevel选择1.6,点击OK按钮。2)Cleanmytestproject.PropertiesJavaBuildPathLibraries,deleteAndroidDependenciesinmytestproject6.编写Robotium测试程序1)导包//导入需要测试的工程importcom.example.android.notepad.NotesList;//robotium提供的测试用类importcom.jayway.android.robotium.solo.Solo;//测试工程要继承用来测试activity的父类importandroid.test.ActivityInstrumentationTestCase2;2)泛型写需要测试的工程的入口privatestaticClasslauncherActivityClass;//定义类privatestaticfinalStringPackageName=com.example.android.notepad;//定义包名privatestaticfinalStringLanch_activity_full_className=com.example.android.notepad.NotesList;//定义启动activitystatic{//创建异常try{launcherActivityClass=Class.forName(Lanch_activity_full_className);}catch(ClassNotFoundExceptione){thrownewRuntimeException(e);}}3)修改构造方法publicRelogin(){super(PackageName,launcherActivityClass);}4)在测试方法前覆写父类的setUp()方法:该方法用来初始化solo,绑定对应的Activity。@OverridepublicvoidsetUp()throwsException{super.setUp();solo=newSolo(getInstrumentation(),getActivity());}5)在测试方法后覆写父类的tearDown()方法:该方法用来清理资源垃圾,关闭activity。publicvoidtearDown()throwsException{solo.finishOpenedActivities();}6)Solo类运用Solo类中提供了自动点击、取得、拖拽、搜索等各种方法。声明Solo类型的成员变量privateSolosolo;典型方法:①点击:clickOnButton(int)—ClicksonaButtonwithagivenindex.clickOnButton(String)—ClicksonaButtonwithagiventext.clickOnCheckBox(int)—ClicksonaCheckBoxwithagivenindex.clickOnView(View)—ClicksonagivenView.clickOnText(String)—ClicksonaViewdisplayingagiventext.clickLongOnText(String)—LongclicksonagivenView.clickOnRadioButton(int)—ClicksonaRadioButtonwithagivenindex.clickOnScreen(float,float)—Clicksonagivencoordinateonthescreen.②取得:getCurrentActivity()—ReturnsthecurrentActivity.getText(String)—ReturnsaTextViewwhichshowsagiventext.getView(int)—ReturnsaViewwithagivenid.getEditText(String)—ReturnsanEditTextwhichshowsagiventext.getImage(int)—ReturnsanImageViewwithagivenindex.③拖拽:drag(float,float,float,float,int)—Simulatetouchingagivenlocationanddraggingittoanewlocation.④搜索:searchText(String)—Searchesforatextstringandreturnstrueifatleastoneitemisfoundwiththeexpectedtext.searchEditText(String)—SearchesforatextstringintheEditTextobjectslocatedinthecurrentActivity.searchButton(String,boolean)—SearchesforaButtonwiththegiventextstringandreturnstrueifatleastoneButtonisfound.更多方法请参见Solo的API文档:!/index-all.html7)创建需要的测试方法可以根据不同目的编写多个测试方法。注意方法名称必须以test开头,程序运行会自动调用以test开头的方法。每次调用测试方法都会运行一次测试工程。下面是测试程序完整代码:importcom.example.android.notepad.NotesList;importcom.jayway.android.robotium.solo.Solo;importandroid.test.ActivityInstrumentationTestCase2;privatestaticClasslauncherActivityClass;privatestaticfinalStringPackageName=com.example.android.notepad;privatestaticfinalStringLanch_activity_full_className=com.example.android.notepad.NotesList;static{try{launcherActivityClass=Class.forName(Lanch_activity_full_className);}catch(ClassNotFoundExceptione){thrownewRuntimeException(e);}}publicRelogin(){super(PackageName,launcherActivityClass);}@OverridepublicvoidsetUp()throwsException{super.setUp();solo=newSolo(getInstrumentation(),getActivity());}@SmokepublicvoidtestAddNote()throwsException{solo.clickOnMenuItem(Addnote);//AssertthatNoteEditoractivityisopenedsolo.assertCurrentActivity(ExpectedNoteEditoractivity,NoteEditor);//Intextfield0,addNote1solo.enterText(0,Note1);solo.goBack();//Gobacksolo.clickOnMenuItem(Addnote);//Cli
本文标题:robotium从不会到精通
链接地址:https://www.777doc.com/doc-3352691 .html