zoukankan      html  css  js  c++  java
  • eclipse 搭建Robotium环境--apk 环境搭建

    1.配置好android sdk ,java环境

    2.重新签名apk文件

        在用户目录下,会有一个.android的目录,把re-sign.jar放在该目录下。执行命令 java -jar re-sign.jar 即可

        再把apk文件脱到打开的re-sign上。保存重新签名后的文件。 

        注意,弹出的如下需要截图,后面会用到。

     也可以用脚本直接操作。bat脚本如下

     bat脚本和re-sign.jar再同一个目录下。

    @echo off
    echo "你的.android目录为:"
    echo %USERPROFILE%.android
    copy /y  re-sign.jar  %USERPROFILE%.android && java -jar re-sign.jar
    pause
    

    3.  

    创建测试项目 如下图:选择testTarget时选择This project

    4.创建项目后,新建junit4测试类

    5.导入robotium的jar包

     6.编写代码

    package m.usewidget.test;
    
    import static org.junit.Assert.*;
    
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    
    import com.robotium.solo.Solo;
    
    import android.test.ActivityInstrumentationTestCase2;
    
    public class testRobotiumTest extends ActivityInstrumentationTestCase2 {
    
    	private Solo solo;
    	private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME="com.www.main.StyrtActivity";
    	
    	private static Class<?> launcherActivityClass;
    	static{
    		try{
    			launcherActivityClass=Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME);
    		}catch(ClassNotFoundException e){
    			throw new RuntimeException(e);
    		}
    	}
    	
    	public testRobotiumTest() {
    		//要执行的activity
    		super(launcherActivityClass);
    		// TODO Auto-generated constructor stub
    	}
    
    	@Before
    	public void setUp() throws Exception {
    		//初始化solo对象
    		solo=new Solo(getInstrumentation(),getActivity());
    	}
    
    	@After
    	public void tearDown() throws Exception {
    		solo.finishOpenedActivities();
    	}
        //编写测试用例
    	@Test
    	public void test() {
    		solo.waitForDialogToOpen();
    		
    	}
    
    }
    

      AndroidMainfest.xml

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="m.usewidget.test"
        android:versionCode="29"
        android:versionName="V1.0.29" >
        
    	<uses-sdk android:targetSdkVersion="22" android:minSdkVersion="19" android:maxSdkVersion="22" />
    	
        <instrumentation
            android:name="android.test.InstrumentationTestRunner"
            android:targetPackage="com.www.tompot" />
    
        <application
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name" >
            <uses-library android:name="android.test.runner" />
        </application>
    	
    </manifest>
    

      

    7.配置

     在eclipse中,新建一个Android Test Project,进行配置,使得自动化脚本与要测试的apk进行关联。

      1) 修改Android Test Project下的AndroidMainfest.xml文件,使得粗体标注的package名与resign生成的名字一致
        <instrumentation
              android:name ="android.test.InstrumentationTestRunner"
            android:targetPackage ="com.example.mobile.testedapp" />
      2) 在自动化脚本测试类中,声明初始类,也要与resign生成的main activity类名一致
        private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME ="com.example.mobile.testedapp.MainActivity" ;
     
     
     

    8.运行

     1.android 自带的模拟器安装

      1) 打开Android SDK安装目录

      2) 找到sdk下的platform-tools目录

      3) 把重新签名后的apk文件放在该目录下

      4) 打开命令提示符:cmd

      5) cd  /sdk/platform-tools

      6) 打开要安装apk的模拟机

      7) 运行命令:adb install testedapp.apk。看到Success,说明apk已经安装成功了。

     再安装中出现问题:

      在将程序发布到手机上时提示该错误:

      INSTALL_FAILED_INSUFFICIENT_STORAGE

      原因:空间不够用

      解决方法:

      1. adb shell

      2. #df 

      发现/data下空间不足,原来是安装了太多应用程序导致。

      3. 删除一些不需要的程序即可。

       第一种办法:在反复安装android apk的时候,有的时候可能会遇到adb install错误,内容是:Failure                 [INSTALL_FAILED_UPDATE_INCOMPATIBLE]
      这很可能是因为你在以前uninstall应用的时候,没有做彻底,只是简单的rm /data/app/下面的apk文件了,一个补救的办法如下:
      启动模拟器,然后进入菜单
      settings->applications->mange
      applications-> select the application->select "unistall".
      这样就能彻底删除了,然后再重新安装这个apk就没问题了

       第二种办法:修改模拟器内存大小

        4.新建一个模拟器

    2.夜神模拟器运行

      启动模拟器

      连接模拟器

      adb connect 127.0.0.1:62001
      adb devices

     1) 打开Android SDK安装目录

      2) 找到sdk下的platform-tools目录

      3) 把重新签名后的apk文件放在该目录下

      4) 打开命令提示符:cmd

      5) cd  /sdk/platform-tools

      6) 打开要安装apk的模拟机

      7) 运行命令:adb install testedapp.apk。看到Success,说明apk已经安装成功了。

      运行测试:

      运行时报错:Test run failed: Instrumentation run failed due to 'java.lang.ClassNotFoundException'

     原因是:

        在自动化脚本测试类中,声明初始类,也要与resign生成的main activity类名一致
        private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME ="com.example.mobile.testedapp.MainActivity" ;
     再第7步配置过程中出错了,并没有resign生成的main activity的类名。
    解决方法:

      查看debug-apk包的packageName、versionCode、applicationLabel、launcherActivity、permission等各种详细信息
      aapt dump badging <file_path.apk>

        使用上面的命令查看:launchable-activity:参数。

       并将private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME =launchable-activity获取的参数。

     并将AndroidManifest.xml里面的参数按照debug包显示出来的修改添加

    <uses-sdk android:targetSdkVersion="22" android:minSdkVersion="19" android:maxSdkVersion="22" />

     

     

     

     android adk更新 mirrors.neusoft.edu.cn:80 代理 多试几次

    参考:http://www.cnblogs.com/enjoytesting/p/3622657.html

    http://blog.csdn.net/annkie/article/details/8714716

    http://www.cnblogs.com/easypass/p/3867211.html

     http://blog.sina.com.cn/s/blog_68f262210102vac3.html

  • 相关阅读:
    Android编码规范03
    Android编码规范02
    Android编码规范01
    函数返回值类型为枚举类型
    ObjectAnimator属性动画应用demo
    n个元素的入栈顺序有多少种出栈顺序?
    JNI笔记1
    字符串——面试题1:统计一行字符中有多少个单词?
    快速排序算法
    es6之 async await 使用小计
  • 原文地址:https://www.cnblogs.com/kllay/p/6057948.html
Copyright © 2011-2022 走看看