Robotium基于APK自动化测试,只有APK文件,没有源代码。

Eclipse 默认的debug keystore可以在Windows->Preferences->Android->Build中设置,如下:

去掉APK的签名后,然后为其重新签名。

可通过re-sign.jar,其下载地址如下:

http://recorder.Robotium.com/downloads/re-sign.jar.

双击运行re-sign.jar,将“去哪儿旅行”的APK拖至其上,

若出现错误如下:ERROR:Cannot run program"D:\android-sdk/tools/zipalign":createProcess error=2,the system cannot find the file specified.

解决方法,在Android SDK的platforms文件夹底下选择一个高版本的文件夹,单击进入该文件夹,将该文件夹下的zipalign.exe复制到tools文件夹底下。

成功如下:

2.创建基于APK测试的测试工程

Eclipse中新建Android Test Project,并命名为QunarTest,在select test target 窗口选择“this project”项,

然后新建一个libs文件夹,然后将下载好的jar文件放到该文件夹下,

用鼠标右键单击该jar,依次选择BuildPath->Add To Build Path。

src右击新建包和类,新建一个包com.qunar.test,新建第一个测试类FirstQunarTest,然后编写代码如下:

package com.qunar.test;

import com.robotium.solo.Solo;

import android.test.ActivityInstrumentationTestCase2;

import android.util.Log;

import android.view.View;

@SuppressWarnings("rawtypes")

public class FirstQunarTest extends ActivityInstrumentationTestCase2 {

private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME = "com.Qunar.NoteActivity";

private static Class<?> LauncherActivityClass;

private static final String TAG = "MyResult";

static {

try {

LauncherActivityClass = Class

.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME);

} catch (ClassNotFoundException e) {

throw new RuntimeException(e);

}

}

@SuppressWarnings("unchecked")

public FirstQunarTest() {

super(LauncherActivityClass);  }

private Solo solo;

@Override

protected void setUp() throws Exception {

solo = new Solo(getInstrumentation(), getActivity());

}

public void testCanOpenSettings() throws InterruptedException {

waitForText("软件更新");

if (solo.searchText("软件更新")) {

View view = solo.getView("com.Qunar:id/btn_download");

solo.clickOnView(view);

}

solo.pressMenuItem(0);

}

private void waitForText(String string) throws InterruptedException {

while (!solo.searchText(string)) {

Thread.sleep(1000);

}

}

@Override

public void tearDown() throws Exception {

solo.finishOpenedActivities();

}

}

//插入知识,在编写代码时,可以设置eclipse自动补全,

//最简单的修改方式是:Windows——>Preferences——>Java-->Editor-->Content Asist,

//在Auto activation triggers for Java后面的文本框里只有一个“.”。

//现在你将其改为“.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”即可。

//然后你再试试,会发现,现在的补全功能跟VS差不多了。

//你还可以在Advanced和Favorite里进行高级的设置。

然后将AndroidMainfest.xml以Text Edite 打开,修改package name 和 package,编辑如下:

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.qunar.test"

android:versionCode="1"

android:versionName="1.0" >

<uses-sdk android:minSdkVersion="8" />

<instrumentation

android:name="android.test.InstrumentationTestRunner"

android:targetPackage="com.Qunar" />

<application

android:icon="@drawable/ic_launcher"

android:label="@string/app_name" >

<uses-library android:name="android.test.runner" />

</application>

</manifest>

然后在FirstQunarTest上单击鼠标右键,Run as ->Android JUnit Test,观察结果,自动更新为成功。

Robotium之“去哪儿旅行”的更多相关文章

  1. xth的旅行(codevs 1450)

    题目描述 Description 毕业了,Xth很高兴,因为他要和他的 rabbit 去双人旅行了.他们来到了水城威尼斯.众所周知(⊙﹏⊙b汗),这里的水路交通很发达,所以 xth 和 rabbit ...

  2. wikioi1450 xth的旅行

    题目描述 Description 毕业了,Xth很高兴,因为他要和他的 rabbit 去双人旅行了.他们来到了水城威尼 斯.众所周知(⊙﹏⊙b汗),这里的水路交通很发达,所以 xth 和 rabbit ...

  3. zstu 4247-萌新的旅行

    题目大意: zstu的萌新们准备去自助旅行,他们租了一辆吉普车,然后选择了n个城市作为游览地点.然后他们惊喜的发现他们选择的城市刚好绕城一个环. 也就是说如果给所有城市按照0,1,2,……,n-1编号 ...

  4. codevs 1450 xth 的旅行

     时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 Description 毕业了,Xth很高兴,因为他要和他的 ra ...

  5. U74201 旅行计划 树上找链长度

    题目背景 珂朵莉放假了,她打算去唐山旅行. 题目描述 我们简单地把唐山的共 nn 个景点看成是一棵树,有 n-1n−1 条边将它们连接起来,每个景点有一个游览指数 v_ivi​.珂朵莉的假期时间不长, ...

  6. 【腾讯Bugly干货分享】跨平台 ListView 性能优化

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/FbiSLPxFdGqJ00WgpJ94yw 导语 精 ...

  7. 设计模式-策略模式(Strategy Model)

    1.概述     在开发过程中常常会遇到类似问题,实现一个功能的时候往往有多种算法/方法(策略),我们可以根据环境的不同来使用不同的算法或策略来实现这一功能.     如在人物比较排序的实现中,我们有 ...

  8. io.js的服務器突破

    Node.js与io.js那些事儿 InfoQ中文站 05月20日 14:26 去年12月,多位重量级Node.js开发者不满Joyent对Node.js的管理,自立门户创建了io.js.io.js的 ...

  9. 成 功 的 背 后 !( 致给所有IT人员)

    转载了这篇文章,希望能对自己和看到这篇博客的人有所激励. 成功的背后,有着许多不为人知的故事,而正是这些夹杂着泪水和汗水的过去,才成就了一个个走向成功的普通人. ------------------- ...

随机推荐

  1. C#的Dispose模式复习

    http://www.cnblogs.com/DebugLZQ/archive/2012/08/28/2659189.html http://www.cnblogs.com/tsoukw/archiv ...

  2. [转载]DotNetty 学习

    [转载]http://www.cnblogs.com/littlegod/p/7699482.html DotNetty的学习是带着如下这些问题展开: 1. Socket基础框架方案: 通信模式:异步 ...

  3. 20155322 2016-2017-2 《Java程序设计》第9周学习总结

    20155322 2016-2017-2 <Java程序设计>第9周学习总结 教材学习内容总结 第9周学习的主要内容是课本的第十六.第十七.第十八章,老师的教学指导上主要要求学习以下知识点 ...

  4. R的数据库访问-MySQL

    目录 1 RMySQL 2 环境与安装 3 建立通信 1 RMySQL R作为一款数据分析的工具,,而MySQL是一款常用的开源关系型数据库软件,非常适用于中小型的数据存储,当二者相互结合时才能爆发出 ...

  5. 宿主机 PL/SQL Developer 连接虚拟机 ORACLE 数据库

    1.确保主机与虚拟机间通信正常,双方关闭window防火墙.如能 ping 通,请确保两机IP在一个网段 2.主机安装orcl客户端 3.虚拟机 D:\app\lin\product\11.2.0\d ...

  6. 如何解决Django与Vue语法的冲突

    当我们在django web框架中,使用vue的时候,会遇到语法冲突.因为vue使用{{}},而django也使用{{}},因此会冲突. 解决办法1:在django1.5以后,加入了标签:{% ver ...

  7. jmeter逻辑控制器

    刚开始学习,只写几种了解的逻辑控制器 1.简单控制器 只用来组合采样器和其他逻辑控制器,不影响jmeter的运行 2.循环控制器 用来循环执行采样器和其他逻辑控制器,例如一个用户发送特定请求多次,即可 ...

  8. Linux安装JDK8详细步骤

    1.下载jdk8 查看Linux位数,到oracle官网下载对应的jdk ① sudo uname --m  确认32位还是64位 ② https://www.oracle.com/technetwo ...

  9. hbase Problem binding to node1/192.168.1.13:16020 : 地址已在使用

    这是hbase 从0.9.x升级到1.x后HMaster与HRegionServer端口冲突问题 在hbase升级到1.0.0版本后,默认端口做了改动.其中16020端口是hmaster服务和hreg ...

  10. ES6的新特性(20)—— Module 的加载实现

    Module 的加载实现 上一章介绍了模块的语法,本章介绍如何在浏览器和 Node 之中加载 ES6 模块,以及实际开发中经常遇到的一些问题(比如循环加载). 浏览器加载 传统方法 HTML 网页中, ...