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風格,這將會很混亂,因此沒每款軟件都有利有弊。