您的位置:首页 > 移动开发 > Android开发

Robotium

2016-06-15 16:17 393 查看

简介

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的引用来进行操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 自动化测试