Android studio测试工具之Robotium
本团队期末所做大作业是利用安卓(Android studio)所创作,我们希望做成的是一个类似于小账本的软件,因此,我去网上搜索了一些关于安卓(Android studio)的软件测试工具,希望对于本团队的期末作业进行性能测试,压力测试等等。
一、简介
Robotium是一款国外的Android自动化测试框架,主要针对Android平台的应用进行黑盒自动化测试,它提供了模拟各种手势操作(点击、长按、滑动等)、查找和断言机制的API,能够对各种控件进行操作。Robotium结合Android官方提供的测试框架达到对应用程序进行自动化的测试。另外,Robotium 4.0版本已经支持对WebView的操作。Robotium 对Activity,Dialog,Toast,Menu 都是支持的。
二、相关下载
源码获取:http://code.google.com/p/robotium/
源API文档:http://robotium.googlecode.com/svn/doc/index.html
robotium5.1下载和最新API文档:http://pan.baidu.com/s/1bnlO8MF
官方例子记事本:http://pan.baidu.com/s/1qWLVL72
重签名工具:http://pan.baidu.com/s/1i3H0tKD
也可以在在"File" --> "Settings" -->"Plugins" 中搜索robotium
之后便可以在Tools->Robotium中开启
配置robotium
robotium配置起来也很方面。首先在build.gradle中添加依赖
compile 'com.jayway.android.robotium:robotium-solo:5.6.0'
然后需要在测试工程中的AndroidManifest.xml中做如下的配置
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="xxxx.test">
<uses-library android:name="android.test.runner" />
<instrumentation
android:targetPackage="xxx"
android:name="android.test.InstrumentationTestRunner"
/></manifest>
上面的package="xxxx.test"是我们测试包的名称,下面定义的instrumentation中的tartPackage="xxx"是我们被测试工程的包名称,这个配置很关键,出问题的话很容易出现找不到被测试包的错误。以上就是简单的配置了,接下来就可以开始写测试代码了。
4.新建一个自动化测试类
新建一个Java类,继承ActivityInstrumentationTestCase2<Main>
代码如下:
package com.calculator.test;
import android.test.ActivityInstrumentationTestCase2;
import android.widget.EditText;
import android.widget.TextView;
import com.calculator.Main;
import com.robotium.solo.Solo;
import com.calculator.R;
@SuppressWarnings("rawtypes")
public class MainTest extends ActivityInstrumentationTestCase2 {
private Solo solo;
@SuppressWarnings("unchecked")
public MainTest() {
super(Main.class);
// TODO Auto-generated constructor stub
}
@Override
protected void setUp() throws Exception {
super.setUp();
solo = new Solo(getInstrumentation(), getActivity());
}
public void testDisplayWhiteBox() {
float vFirstNumber = 10;
float vSecondNumber = 10;
float vResult = vFirstNumber * vSecondNumber;
EditText vFirstEditText = (EditText) solo.getView(R.id.EditText01);
solo.clearEditText(vFirstEditText);
solo.enterText(vFirstEditText, String.valueOf(vFirstNumber));
// AccessSecondvalue(edit-filed)andputtingSecondNumbervalueinit
EditText vSecondEditText = (EditText) solo.getView(R.id.EditText02);
solo.clearEditText(vSecondEditText);
solo.enterText(vSecondEditText, String.valueOf(vSecondNumber));
// ClickonMultiplybutton
solo.clickOnButton("Multiply");
assertTrue(solo.searchText(String.valueOf(vResult)));
TextView outputField = (TextView) solo.getView(R.id.TextView01);
// Assert to verify result with visible value
assertEquals(String.valueOf(vResult), outputField.getText().toString());
}
@Override
protected void tearDown() throws Exception {
solo.finishOpenedActivities();
}
}
四、接下来就是运行测试用例
在工具栏点击run,点击Edit configurations 在Defaults中点击Android Tests,在before launch中添加gradle-aware make在输入框中输入,自定义的task任务,确定后就大功告成。
接下来我们直接在测试用例中点击运行我们的测试用例即可
让我们看一看测试结果
OK,robotium在Android studio无源码完美运行
心得体会
经过在网上找寻软件测试工具的学习教程,并且进行了一轮两轮的学习和实践,我大致理解了此项软件测试工具是如何操作以及进行测试的,并且对于我们的项目我进行了对于我自己这个部分的测试,发现我们的软件的确还有一些并不足特别是我的这个一部分,因此,对于我来说,有了一定的改进方向。我大致明白了当产品真正的使用的时候,有可能出现的一些问题,而对于此项软件测试工具来说,它的实用性是很显著的,它的操作十分便捷,仅仅需要依靠cmd输入一定的代码,就能够大致的进行一些性能的测试以及压力测试的使用。
而Robotium作为早期Android世界里用得最为广泛的测试框架,基于JUnit扩展了大量关于Android UI的有效测试方法。它的优点也是很显著的1、使用简单2、示例容易阅读3、不需要访问源代码,就可以测试一个APK4、可以轻松的识别元素5、可以依靠默认的android 框架,而它的缺点呢,缺点:1、目前并不是支持所有的试图和对象,例如SlidingView2、比单元测试慢3、单类包含所有的方法,selenium1风格,这将会很混乱,因此没每款软件都有利有弊。