标签:
前段时间用Appium写安卓的UI自动化脚本,总的来说还是很不错的,但是有以下几个限制:
当然,这并不是说appium不好,这些只是我在写脚本中遇到的问题,appium的优点很多了,客户端语言没有限制(用自己熟悉的语言写脚本),基于Webdriver(这个真心的很强大),同时支持android和iOS。。。其它优点不再多说。带着appium给我的痛点,我把目光投向了另一个比较流行的自动化测试框架,Robotium。
下面就是我的Robotium的第一天之旅:
java -jar re-sign.jar
这时会启动一个窗口,把需要签名的apk拖进去既可,如图,完了会生成一个AndroidCalculator-V1_0_debug.apk的文件
#进入到AndroidCalculator-V1_0_debug.apk所在的文件夹 adb install AndroidCalculator-V1_0_debug.apk
至此,准备工作都就绪了,下面开始创建项目
4. 新建项目-其它-Android-Android Test Project,下面有一步比较重要
这里选择This project,后面选择SDK版本,如果workspace为空,点finish后会报一个java.lang.NullPointerException的错误,原因是这是第一个工程,eclipse无法选择指定的资源(通俗点来讲就是,你创建了一个新测试工程,你选择创建的工程作为被测试工程,这时eclipse找不到这个工程,所以就报空指针异常了),解决办法有两种,重复上述步骤,再建立一个新的工程,并以新建的工程作为测试工程,另一种是在创建测试工程前先创建一个Android Project,然后再创建Android Test Project,此时也没有这个问题。
5. 将下载下来的robotium-solo-x.y.jar加入到BuildPath中,这个很简单,但是有一点需要特别注意,在编辑BuildPath时,有一个Order and Export,选中robotium-solo-x.y.jar,然后点OK,否则在执行脚本时会报 java.lang.NoClassDefFoundError:com.jayway.android.robotium.solo.Solo
6. 接下来就开始写脚本了,这个比较简单,先贴代码
1 /** 2 * 3 * Created by zombie on 2015年1月30日 4 * chen_peng06@163.com 5 */ 6 package com.zombie.test; 7 8 import android.test.ActivityInstrumentationTestCase2; 9 10 import com.robotium.solo.Solo; 11 12 13 /** 14 * @author zombie 15 * 16 */ 17 public class CalculatorTest extends ActivityInstrumentationTestCase2 { 18 private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME = "com.calculator.Main"; 19 private static Class laucherActivityClass; 20 21 static { 22 try { 23 laucherActivityClass = Class 24 .forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME); 25 } catch (ClassNotFoundException e) { 26 throw new RuntimeException(e); 27 } 28 } 29 30 @SuppressWarnings("unchecked") 31 public CalculatorTest() { 32 super(laucherActivityClass); 33 } 34 35 private Solo solo; 36 37 @Override 38 protected void setUp() { 39 solo = new Solo(getInstrumentation(), getActivity()); 40 } 41 42 public void testCalculator() { 43 solo.clearEditText(0); 44 solo.enterText(0, "10"); 45 46 solo.clearEditText(1); 47 solo.enterText(1, "20"); 48 49 solo.clickOnButton("Multiply"); 50 51 assertTrue("Problem asserting multiply", solo.searchText("200")); 52 } 53 54 @Override 55 public void tearDown() { 56 solo.finishOpenedActivities(); 57 } 58 }
看一下第18行,这里就用到了签名时生成的Main activity,这个是启动app的activity,这个脚本比较简单,今天主要是Hello world,后面分开讲具体的代码及API分析
7.修改配置文件AndroidManifest.xml
1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="PACKAGE.test.test" 4 android:versionCode="1" 5 android:versionName="1.0" > 6 7 <uses-sdk android:minSdkVersion="19" /> 8 9 <instrumentation 10 android:name="android.test.InstrumentationTestRunner" 11 android:targetPackage="com.calculator" /> 12 13 <application 14 android:icon="@drawable/ic_launcher" 15 android:label="@string/app_name" > 16 <uses-library android:name="android.test.runner" /> 17 </application> 18 19 </manifest>
看下第11行,这里就是我们重新签名时的Package name
8.下面就可以直接执行用例了,右键 run as - Android JUnit Test
至此一个简单的robotium入门程序就有了,后面会继续写有源代码的情况下如何创建工程以及robotium常用api分析
标签:
原文地址:http://www.cnblogs.com/qianyiliushang/p/4262853.html