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的引用来进行操作。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories