Robotium

简介

 

Robotium是一款国外的Android自动化测试框架,主要针对Android平台的应用进行黑盒自动化测试,它提供了模拟各种手势操作(点击、长按、

滑动等)、查找和断言机制的API,Robotium结合Android官方提供的测试框架达到对应用程序进行自动化的测试。另外,Robotium 4.0版本已经支持

对WebView的操作。Robotium 对Activity,Dialog,Toast,Menu 都是支持的。非常简单使用,文档很丰富,使用的人也很多,不用知道源码也能够测试。

 

使用

1、使用AS新建一个Android项目,并且在build.gradle添加robotium依赖

<span style="font-family: Arial, Helvetica, sans-serif;">dependencies {</span>
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.0.1'

    compile 'com.jayway.android.robotium:robotium-solo:5.2.1'
}

 

 

2、在MainActivity中输入以下内容,创建一个简单的登陆逻辑,当密码和账号都输入的是“123”就登陆成功了

public class MainActivity extends AppCompatActivity {

    private EditText userNameEdt;
    private EditText passwordEdt;
    private Button button;
    private TextView resultTv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        userNameEdt = (EditText) findViewById(R.id.username_et);
        passwordEdt = (EditText) findViewById(R.id.password_et);
        resultTv = (TextView) findViewById(R.id.result_tv);
        button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if ("123".equals(userNameEdt.getText().toString()) && "123".equals(passwordEdt.getText().toString())) {
                    resultTv.setText("登陆成功");
                } else {
                    resultTv.setText("登陆失败");
                }
            }
        });
    }
}


3、在AS自动生成的AndroidTest目录下新建测试类

package com.hujc.androidtest;

import android.test.ActivityInstrumentationTestCase2;
import android.widget.Button;
import android.widget.TextView;

import com.robotium.solo.Solo;

@SuppressWarnings("rawtypes")
public class MainRobotiumTest extends ActivityInstrumentationTestCase2 {
    private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME = "com.hujc.androidtest.MainActivity";
    private static Class<?> launcherActivityClass;

    static {
        try {
            launcherActivityClass = Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME);
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }

    private Solo solo;

    @SuppressWarnings("unchecked")
    public MainRobotiumTest() throws ClassNotFoundException {
        super(launcherActivityClass);
    }

    public void setUp() throws Exception {
        super.setUp();
        solo = new Solo(getInstrumentation());
        getActivity();
    }

    @Override
    public void tearDown() throws Exception {
        solo.finishOpenedActivities();
        super.tearDown();
    }

    public void testRun() {
        solo.waitForActivity("MainActivity", 2000);
        //Clear the EditText editText1
        solo.clearEditText((android.widget.EditText) solo.getView(R.id.username_et));
        solo.enterText((android.widget.EditText) solo.getView(R.id.username_et), "123");

        solo.clearEditText((android.widget.EditText) solo.getView(R.id.password_et));
        solo.enterText((android.widget.EditText) solo.getView(R.id.password_et), "123");


        try {
            runTestOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Button button = (Button) solo.getView(R.id.button);
                    button.performClick();
                }
            });
        } catch (Throwable throwable) {
            throwable.printStackTrace();
        }

        TextView result = (TextView) solo.getView(R.id.result_tv);
        assertEquals("登陆成功", result.getText().toString());

    }
}


4、运行测试类

 

 

 

可以看到模拟器自动输入文字并且登陆成功了,测试成功


总结

相比前面介绍的UIautomator,Robotium在使用上要方便很多,可以更加方便的获取到View的引用来进行操作。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值