10.Android UiAutomator Junit 斷言函數的使用

來源:互聯網
上載者:User

標籤:

一、斷言函數介紹1.斷言函數:

確定被測試的方法是否按照預期的效果正常工作

  • 比如說:
if (假設成立){    通過測試}else{    報錯並終止當前用例測試}
2.斷言函數用例結構:
  • 一個完整的測試案例必需要有斷言函數
setUp//初始化//測試案例,junit4版本才可以使用多條用例test        初始化情境與資料test        類比操作步驟test        斷言test        恢複情境    tearDown//回收初始化垃圾
3.斷言函數Java錯誤類型:1)Error:

一般是指與虛擬機器相關的問題,如系統崩潰,虛擬機器錯誤,記憶體空間不足,方法調用棧溢出等。對於這類錯誤導致的應用程式中斷,僅靠程式本身無法恢複和預防(斷言)

2)Exeeption:

表示程式可以處理的異常,可以捕獲且可能恢複。遇到這類異常,應該儘可能處理異常,使程式恢複運行,而不應該隨意終止異常(最常見的是UI對象找不到的異常)

二、斷言函數API:1.斷言函數分類:

  • 例如:
//斷言兩個對象是否相等asserEquals(String message,Object expected,Object actual){    if (expected==null && actual==null){        return ;        }    if (expected!=null && expected.equals(actual)){        return    }    failNotEquals(message,expected,actual);}

 

參數

說明

Message 可選訊息,在宣告失敗後會拋出這個訊息
Expected 期望的值
Actual 實際的值

 

2.相關API:1)
方法 說明
assertEquals(boolean,boolean) 如果期望(expected)和實際(actual)相等則通過,否則失敗
assertEquals(String,boolean,boolean) 如果期望(expected)和實際(actual)相等則通過,否則失敗
assertEquals(byte,byte) 如果期望(expected)和實際(actual)相等則通過,否則失敗
assertEquals(String,byte,byte) 如果期望(expected)和實際(actual)相等則通過,否則失敗
assertEquals(char,char) 如果期望(expected)和實際(actual)相等則通過,否則失敗
assertEquals(String,char,char) 如果期望(expected)和實際(actual)相等則通過,否則失敗
assertEquals(int,int) 如果期望(expected)和實際(actual)相等則通過,否則失敗
assertEquals(String,int,int) 如果期望(expected)和實際(actual)相等則通過,否則失敗
assertEquals(long,long) 如果期望(expected)和實際(actual)相等則通過,否則失敗
assertEquals(String,long,long) 如果期望(expected)和實際(actual)相等則通過,否則失敗
assertEquals(Object,Object) 如果期望(expected)和實際(actual)相等則通過,否則失敗
assertEquals(String,Object,Object) 如果期望(expected)和實際(actual)相等則通過,否則失敗
assertEquals(short,short) 如果期望(expected)和實際(actual)相等則通過,否則失敗
assertEquals(String,short,short) 如果期望(expected)和實際(actual)相等則通過,否則失敗
assertEquals(String,String) 如果期望(expected)和實際(actual)相等則通過,否則失敗
assertEquals(String,String,String) 如果期望(expected)和實際(actual)相等則通過,否則失敗

 

  • API樣本:
public void testDemo1() throws UiObjectNotFoundException{    //斷言相等的例子    assertEquals(5, add(2,3));    //斷言不相等的例子    assertEquals(6, add(2,3));}//建立一個加法方便使用斷言函數public int add(int a,int b){    return a+b;}
2)

浮點運算不是萬全精確的,所以比較浮點數值的時候引入精確程度

assertEquals(double expected,double actual,double delta)

方法

說明

assertEquals(double,double,double) 如果期望(expected)和實際(actual)相差不超過精度值(delta)則通過,否則失敗
assertEquals(String,double,double,double) 如果期望(expected)和實際(actual)相差不超過精度值(delta)則通過,否則失敗
assertEquals(float,float,float) 如果期望(expected)和實際(actual)相差不超過精度值(delta)則通過,否則失敗
assertEquals(String,float,float,float) 如果期望(expected)和實際(actual)相差不超過精度值(delta)則通過,否則失敗

 

  • API樣本:
public void testDemo1() throws UiObjectNotFoundException{    //斷言不相等的例子    assertEquals(0.3333, Double.valueOf(1)/3,0);    //斷言相等的例子    assertEquals(0.3333, Double.valueOf(1)/3,4);    //斷言相等的例子    assertEquals(0.3333, Double.valueOf(1)/3,0.0001);}//建立一個加法方便使用斷言函數public int add(int a,int b){    return a+b;}
3)

方法

說明

assertFalse(boolean) 如果條件(condition)為False則通過,否則失敗
assertFalse(String,boolean) 如果條件(condition)為False則通過,否則失敗
assertTrue(boolran) 如果條件(condition)為True則通過,否則失敗
assertTrue(String,boolran) 如果條件(condition)為True則通過,否則失敗
assertNotNull(Object) 如果條件(condition)為非空則通過,否則失敗
assertNotNull(String,Object) 如果條件(condition)為非空則通過,否則失敗
assertNull(Object) 如果條件(condition)為空白則通過,否則失敗
assertNull(String,Object) 如果條件(condition)為空白則通過,否則失敗
assertNotSame(Object,object) 如果期望(expected)和實際(actual)引用不同的記憶體對象對象則通過,否則失敗
assertNoteSame(String,Object,Object) 如果期望(expected)和實際(actual)引用不同的記憶體對象對象則通過,否則失敗
assertSame(Object,Object) 如果期望(expected)和實際(actual)引用相同的記憶體對象對象則通過,否則失敗
assertSame(String,Object,Object) 如果期望(expected)和實際(actual)引用相同的記憶體對象對象則通過,否則失敗

 

API樣本:

//樣本一: public void testDemo1() throws UiObjectNotFoundException{ //自己聲明一個布爾值為了測試斷言函數的使用 boolean is=true; //斷言成功的例子 assertTrue(is); //宣告失敗的例子 assertFalse(is); } //樣本二:public void testDemo1() throws UiObjectNotFoundException{    int a = 100;    int b = 100;    Integer c=new Integer(100);    //斷言成功的例子,值的比較    assertSame(a, b);    //宣告失敗的例子    assertNotSame(a, b);    //宣告失敗的例子,記憶體位址比較    assertSame(a, c);    //斷言成功的例子    assertSame((Object)a, c);}

 

4)

方法

說明

fail() 用例立即失敗
fail(String) 用例立即失敗,且拋出指定訊息
failNotEquals(String,Object,Object) 用例立即失敗,且拋出指定訊息與期望、實際值不相等的訊息
failNotSame(String,String,String) 用例立即失敗,且拋出指定訊息與期望、實際值不相等的訊息
failSame(String) 用例立即失敗,且拋出指定訊息

 

  • API樣本:
public void testDemo1() throws UiObjectNotFoundException{    UiDevice.getInstance().pressBack();    UiDevice.getInstance().pressMenu();    UiDevice.getInstance().pressHome();    //用例失敗,且拋出異常    fail("Failed");}
三、使用斷言函數的執行個體示範
//開始protected void setUp() throws Exception{    super.setUp();}public void testDemo1() throws UiObjectNotFoundException{    //初始化情境    UiDevice.getInstance().pressBack();    UiDevice.getInstance().pressBack();    UiDevice.getInstance().pressBack();    UiDevice.getInstance().pressHome();    //開啟檔案管理    UiObject app=new UiObject(new UiSelector().description("應用"));    UiObject file=new UiObject(new UiSelector().text("檔案管理工具"));    app.clickAndWaitForNewWindow();    file.clickAndWaitForNewWindow();    //驗證開啟成功    String packageName=UiDevice.getInstance().getCurrentPackageName();    assertEquals("File open succes!","com.cyanogenmod.filemanager", packageName);    //檢查目錄名為test的目錄    UiObject test=new UiObject(new UiSelector().text("test"));    UiScrollable listView=new UiScrollable(new UiSelector().className("android.widget.ListView"));    boolean FindResult=listView.scrollIntoView(test);    //如果有該目錄則停止執行用例    if (FindResult==true){        fail("test目錄已經存在");    }    //如果沒有該目錄則建立test目錄    UiObject dos=new UiObject(new UiSelector().description("操作"));    dos.clickAndWaitForNewWindow();    UiObject newFile=new UiObject(new UiSelector().text("建立檔案夾"));    newFile.clickAndWaitForNewWindow();    UiObject input=new UiObject(new UiSelector().className("android.widget.EditText"));    input.setText("test");    UiObject ok=new UiObject(new UiSelector().text("確定"));    ok.click();    //驗證建立成功        boolean FindResult2=listView.scrollIntoView(test);    assertTrue("test目錄建立成功",FindResult2);}//完成protected void tearDown() throws Exception{    super.tearDown();    UiDevice.getInstance().pressBack();    UiDevice.getInstance().pressBack();    UiDevice.getInstance().pressBack();    UiDevice.getInstance().pressHome();}

10.Android UiAutomator Junit 斷言函數的使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.