使用“夜神模拟器”调试robotium(无源码)demo
关于robotium网上有好多血淋漓的教程,自己也踩过很多坑,自己也总结一下
robotium:本质是instrument,Android自带的一个框架,robotium给他穿了一件外包,更好看,更好用了;
首先你得有一个搭建好的Android环境,建议去百度,环境的变量一定要配置正确,调试yeshen模拟器:http://jingyan.baidu.com/article/359911f55f327257ff030648.html
然后你要下载几个东西:
3.1 robotium的jar包
3.2 re-sign的 jar 包 :这个是用来重签名的工具,具体的使用方法是,cd到目录,执行java -jar解压jar包,将apk拖进去
将获取到的apk和packagename和activityname截图,后面会有用、
3.3如果第二步有一个error=2的错误,那就是你的sdk tools路径下没有ziliplin的exe,将这个文件房子啊tools文件夹下,再次签名就能成功(如果还报错,去检查环境变量)
编写robotium demo代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
| import com.robotium.solo.Solo; import android.app.Activity; import android.test.ActivityInstrumentationTestCase2; import android.util.Log; import android.view.View; import android.widget.EditText; import android.widget.TextView;
public class Test_Demo extends ActivityInstrumentationTestCase2{ private Solo solo; private static final String TARGET_PACKAGE_ID="com.e xample"; private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME="=MainActivity"; private static Class launcherActivityClass; final String TAG="Test->N01"; long startTime=0; Activity activity; static{ try { launcherActivityClass = Class .forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } } public Test_Demo() { super(TARGET_PACKAGE_ID,launcherActivityClass); } public void setUp() throws Exception { Log.d(TAG,"启动了一个测试用例 " ); this.activity=this.getActivity(); solo = new Solo(getInstrumentation(),getActivity()); } public void testCase01() throws Exception{ solo.sleep(5000); assertTrue("登录未加载完",solo.searchText("进入游戏")); solo.clickOnText("进入游戏"); solo.waitForText("确认购买?"); EditText editText = solo.getEditText("请输入消费夜神币"); solo.enterText(editText,"0.01"); solo.clickOnText("确认购买?"); solo.waitForText("夜神支付"); assertTrue("支付跳转未完成",solo.searchText("钱包余额")); solo.clickOnText("银联支付"); TextView view1 = null; view1 = (TextView)solo.getView(0); String Text = (String) view1.getText(); System.out.println(Text); assertTrue("qing call me is false",solo.searchText("searchText")); Thread.sleep(5000); } public void tearDown() throws Exception { try { this.solo.finishOpenedActivities(); } catch (Throwable e) { e.printStackTrace(); } this.activity.finish(); super.tearDown(); } }
|
6.修改xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.bignox.sdk.example.test" android:versionCode="1" android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.yeshen.example" />
<application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <uses-library android:name="android.test.runner" /> </application>
</manifest> |
7.run Androidjunittest
8.选择一个设备,我用的是夜神Android模拟器,和真机的效果差不多,adb的链接命令有点不一样
8.1首先得进入到本地安装nox的bin目录:方法打开文件的位置即可,
8.2nox_adb connect 127.0.0.1:62001
如果adb server还是报错,那就继续:nox_adb kill-server nox_adb start-server 再次执行一次连接命令
设备就识别出来了
9.0可以编辑自己的case代码了
福利:看元素sdk自带的可以查看 uiinstrument 就在sdktools的目录下
调试用的夜神模拟器下载的链接地址: www.yeshen.com 我是雷锋别夸我