Android Studio在只有apk情况下的的robotium自动化框架应用

Android Studio在只有apk情况下的的robotium自动化框架应用

由于eclipse的ADT框架没有人维护,选用Android Studio来进行robotium的使用。
1. 准备一个重签名的测试apk
apk重签名:
重签名工具:github地址:https://github.com/pengwei1024/apkReSign/
下载使用点击文件夹jar里面的随意一个,
Android Studio在只有apk情况下的的robotium自动化框架应用_第1张图片
然后把所需要签名的apk拖入进去
Android Studio在只有apk情况下的的robotium自动化框架应用_第2张图片
然后出现这个提示就说明重签名成功
Android Studio在只有apk情况下的的robotium自动化框架应用_第3张图片
这也会显示包名和主activity
另外显示apk的包名和主activity 的方法:
终端进入sdk文件目录下的build-tools的26.0.1文件夹(因为里面有aapt文件)输入命令aapt dump badging xx.apk文件
2. 新建一个android项目
新建项目后,一开始默认为android,切换到project
Android Studio在只有apk情况下的的robotium自动化框架应用_第4张图片
3. 在app模块下的build.gradle文件中自定义一个task任务
Android Studio在只有apk情况下的的robotium自动化框架应用_第5张图片
注: (1).from后的apk是刚刚重签名的被测包,要把它放在app模块下
(2).into 后的路径是项目运行自动产生app-debug.apk的路径
在defaultConfig中定义被测试apk的包名和测试启动类InstrumentationTestRunner
还要在dependence添加一行androidTestImplementation ‘com.jayway.android.robotium:robotium-solo:5.2.1’
具体的build.gradle文件代码如下

apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.xx.xx"//改成自己的包名
        minSdkVersion 18
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    androidTestImplementation 'com.jayway.android.robotium:robotium-solo:5.2.1'
}
task copyTask(type: Copy) {
    from 'test.apk'//将被测试apk放在工程app目录下
    into 'build/outputs/apk/debug'//将apk复制到指定目录
    rename { String fileName ->
        fileName = "app-debug.apk" // 重命名
    }
}

4.创建测试类
(1)把robotium-solo-5.2.1.jar复制到libs目录下
(2)在app模块下的src的androidTest的java目录下新建一个测试类Test, 继承父类ActivityInstrumentationTestCase2
Android Studio在只有apk情况下的的robotium自动化框架应用_第6张图片
TestDemo代码如下:

import android.test.ActivityInstrumentationTestCase2;
import android.util.Log;

import com.robotium.solo.Solo;


public class TestDemo extends ActivityInstrumentationTestCase2 {

    private static Class launchActivityClass;
    private static String mainActiviy = "com.xx.xx.xx";//改成自己apk的主activity
    private static String packageName = "com.xx.xx";//改成自己的包名
    public Solo solo;
    static {
        try {
            Log.v("LoginTest","start============");
            launchActivityClass = Class.forName(mainActiviy);
            Log.v("LoginTest","end============");
        } catch (ClassNotFoundException e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }

    public TestDemo() {
       super(launchActivityClass);
    }

    @Override
    protected void setUp() throws Exception {

        super.setUp();
        Log.v("LoginTest","setUp============");
        //this.activity = this.getActivity();
        this.solo = new Solo(getInstrumentation());
        getActivity();//唤醒程序
    }

    @Override
    protected void tearDown() throws Exception {
        solo.finishOpenedActivities();
    }
    public void testCase_001() {
        //solo.sleep(5000);
        //Log.e("123","启动测试成功");
        //solo.unlockScreen();
        solo.clickOnText("视频");
        solo.sleep(10000);
//可以在这个函数里面填写简单的测试用例
    }
}

我们是在testCase里面编写我们的测试用例,其他模块的用途自行查询哈。
5. 修改AndroidManifest.xml文件
package修改成我们被测包的包名

"http://schemas.android.com/apk/res/android"
    package="com.xx.xx">//修改成自己apk的包名

application模块下的activity注释(原因还未查明,但是有的话会报错,大概是build.gradle文件里写了被测包的主activity?)
还要删除main模块下Java文件夹(它这里面有mainactivity类,上面已经注释掉activity模块了,所以这个文件也不需要了)
Android Studio在只有apk情况下的的robotium自动化框架应用_第7张图片
6. 运行测试
点击右上角的Edit Configurations,添加Android Instrumented Tests,
Android Studio在只有apk情况下的的robotium自动化框架应用_第8张图片
Android Studio在只有apk情况下的的robotium自动化框架应用_第9张图片
在before launch中添加gradle-aware make在输入框中输入,选择:app:copyTask, 确定后就大功告成。
Android Studio在只有apk情况下的的robotium自动化框架应用_第10张图片
Android Studio在只有apk情况下的的robotium自动化框架应用_第11张图片

然后点击运行,安装包就可以安装到手机然后进行测试

你可能感兴趣的:(Android Studio在只有apk情况下的的robotium自动化框架应用)