使用Robotium进行Android Automation测试

1、创建一个android 工程welcomeworld
目录结构如图:
这里写图片描述

MainActivity代码如下:

public class MainActivity extends AppCompatActivity {

   //ß @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button changeButton = (Button) findViewById(com.example.mifeng.welcomeworld.R.id.change_btn);
        changeButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // R.id.chang
                Toast.makeText(MainActivity.this, "you click the changeButton", Toast.LENGTH_SHORT).show();
                int name = R.string.app_name;
                String APPName = getString(R.string.app_name);
                String greet = getString(R.string.mifeng);
                //Log.v(APPName);
                Log.v(greet, "hahs");
            }
        });
    }

布局xml文件如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/change_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="0.26"
        android:text="Button" />
</LinearLayout>

如图创建learning这个目录,并在该目录下创建Java测试文件 InstrumentationTest.java
内容为:

package com.example.mifeng.welcomeworld.learning;

import android.app.Activity;
import android.app.Instrumentation;
import android.test.ActivityInstrumentationTestCase2;

import com.example.mifeng.welcomeworld.MainActivity;
import com.example.mifeng.welcomeworld.R;
import com.robotium.solo.Solo;

//import com.robotium.solo.Solo;

/**
 * Created by mifeng on 2017/6/22.
 */

public class InstrumentationTest extends ActivityInstrumentationTestCase2<MainActivity> {
    public Instrumentation ins;
    public Solo solo;
    public InstrumentationTest(){
        super(MainActivity.class);
    }
    public void setUp()throws Exception{
        super.setUp();
        ins = getInstrumentation();
        getActivity();
    }
    public void tearDown()throws Exception{
        super.tearDown();
    }
    public void test1(){
        solo = new Solo(ins, getActivity());
        System.out.println(ins);

        Activity activity = solo.getCurrentActivity();
        if(activity!=null){
           int id = activity.findViewById(R.id.change_btn).getId();
           // solo.clickOnButton(id);
            solo.clickOnView(activity.findViewById(R.id.change_btn));
            solo.sleep(10000);
        }

    }
}

按下图修改Manifest文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.mifeng.welcomeworld">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    <instrumentation
        android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="com.example.mifeng.welcomeworld.learning"></instrumentation>

</manifest>

注意:若在上面的文件中的标签...中出现can not resolve “com.example.mifeng.welcomeworld.learning” 可以忽略

build.gradle(app那个,别选错了)修改成如下:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.3"
    defaultConfig {
        applicationId "com.example.mifeng.welcomeworld"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
//        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    androidTestCompile 'com.jayway.android.robotium:robotium-solo:5.6.0'
    //androidTestCompile 'com.android.support.test:rules:0.4.1'
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
//    androidTestCompile 'com.jayway.android.robotium:robotium-solo:5.6.0'
//    androidTestCompile 'com.android.support.test:rules:0.4.1'
//    androidTestCompile 'junit:junit:4.12'
}

注意:gradle文件中需要注释掉代码

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

经过上面步骤,就可以运行起来验收效果了!

这里写图片描述


也可以使用工程提供的AndroidJunitRunner,这样的话就不需要注释掉

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

对应的修改Manifest文件内容

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.mifeng.welcomeworld">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    //<instrumentation
      //  android:name="android.test.InstrumentationTestRunner"
     //   //android:targetPackage="com.example.mifeng.welcomeworld.learning">
     //</instrumentation>

</manifest>

Reference:
待补充

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值