Android測試環境
Android測試環境的核心是一個Instrumentation框架。Instrumentation框架通過將主程序和測試程序運行在一個進程來實現功能,通過Java反射機制,來獲取當前窗口所有視圖,并根據該視圖查找到目標控件的屬性信息,并計算出目標控件中心點坐標。然后,利用Instrument內部接口,實現點擊操作。
Android自身提供了對Instrumentation測試的基本支持,其中之一就是位于android.test包內的ActivityInstrumentationTestCase2類,它擴展了JUnit的TestCase類提供的Android activities的功能測試。在應用測試中,每個activity首先會被Instrumentation初始化,然后再加載到Android模擬器來執行。
Robotium的case都繼承ActivityInstrumentationTestCase2。設計的目的:主要用來得到測試的Activity,執行單元測試用例。getActivity()是入口
Robotium - Instrumentation
Robotium框架,使用的也是Instrumentation,通過將測試的工程項目安裝到AVD(模擬器)上面來與運行時的項目交互,觸發其組件的動作等。這種方法需要兩個項目同時安裝到AVD中。
Robotium簡介:
是一個測試框架,能方便為Android應用程序編寫強大、健壯的自動化黑盒測試用例。利用Robotium的支持,用例開發人員能編寫功能、系統和驗收測試方案,跨越多個Android activities,Robotium支持Activities,Dialogs, Toasts, Menus, Context Menus
官網:www.robotium.org
中文社區:www.robotium.cn
優點:
1. 可以以最少的知識去測試應用程序,和發展強大的測試用例。
2. 可以自動處理多個Android activity
3. 開源, 版本更新迅速
4. 用于黑河的自動化測試,可以在有源碼或者只有APK的情況下對目標應用進行測試,提供了模仿用戶操作行為的API,比如輸入text等。
5. 通過運行時綁定GUI組件使測試用例更強大
6. 執行測試用例速度快
7. 順利整合了Maven或Ant來運行測試,持續集成的一部分
常用方法:
get
getCurrentActivity() --
getText(String)
getView(int)
getEditText(String)
getImage(int) -- Returns an p_w_picpathView with a given index
Click:
clickOnButton(int)
clickOnButton(String)
clickOnCheckBox(int)
clickOnView(View)
clickOnText(String)
clickLongOnText(String)
clickOnRadioButton(int)
clickOnScreen(float, float)
drag & scroll:
darg(float, float, float, float, int)
scrollDown()/scrollToBottom()/scrollToTop()/scrollToSide(int side)
search:
searchText(String)
searchEditText(String)
searchButton(String, boolean)
wait:
waitForActivity(String name)
waitForCondition(Condition condition, timeout)
waitForDialogToClose(long timeout)
waitForTest(String text)
waitForView(View view)
waitForWebElement(By by)
Class:
By: public abstract class By extends Object 用于處理web元素
Condition:public interface Condition Method: isSatisfied()
RobotiumUtils: public class RobotiumUtils extends Object 包含一些工具性的方法,供其他類使用
Solo:public class Solo extends Object Robotium測試開發的主要類,對views, WebViews, Activities, Dialogs, Menus, Context Menus有很好的支持
Timeout: public class Timeout extends Object 獲取或設置超時時間
WebElement:public class WebElement extends Object WebViews的元素,有getClassName, getTagName等屬性
編寫Robotium測試程序:
指定需要啟動的Activity,launcherActivityClass = Class.forName(ActivityName);
在構造函數里傳入該Activity
重寫setUp() -- 初始化Solo對象
重寫tearDown() -- 釋放所有Activity資源
編寫測試用例
為什么需要重簽名?
因為測試apk和被測apk的簽名需要一致才能運行并驅動測試
如何進行重簽名?
雙擊re-sign.jar, 將重簽名的apk拖至re-sign.jar窗口中
cmd: java -jar xxx/resign.jar(jar包所在位置)
InstrumentationTestRunner: 執行JUnit Test, 可以理解為對用例進行管理和操作,繼承在Instrumentation
另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
文章標題:Robotium入門-創新互聯
轉載來源:http://www.yijiale78.com/article2/pspic.html
成都網站建設公司_創新互聯,為您提供營銷型網站建設、小程序開發、虛擬主機、ChatGPT、App開發、建站公司
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯