91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android中如何測試異步任務

發布時間:2022-04-15 16:39:25 來源:億速云 閱讀:176 作者:iii 欄目:編程語言

這篇文章主要介紹“Android中如何測試異步任務”,在日常操作中,相信很多人在Android中如何測試異步任務問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Android中如何測試異步任務”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

Android中的測試(寬泛的定義)是一個單元測試集合的擴展。涉及初始化、關閉測試,包含setUp()和tearDown()操作,使用反射 的方式推斷出不同的測試方式(從JUnit4開始我們就可以使用注釋來指定的優先級和執行所有測試)。一個典型的測試結構如下:

public class MyManagerTest extends ActivityTestCase {        public MyManagerTest(String name) {         super(name);     }        protected void setUp() throws Exception {         super.setUp();     }        protected void tearDown() throws Exception {         super.tearDown();     }        public void testDummyTest() {         fail("Failing test");     }    }

這是一個非常明顯的示例:實際開發中,我們想要測試例如HTTP響應、SQL存儲等等。在Sixt我們遵從一種Manager/Model方法:每 個Model包含一個實體(車、顧客等)的表現。每個Manager用不同的模型(例如,我們的LoginManager可能需要用戶與之交互的模型)聚 合成一套功能。

大多數的Manager集中執行HTTP請求是要從后臺獲取數據。例如,我們用下面的代碼來執行用戶的登錄:

mLoginManager.performLoginWithUsername("username", "password", new OnLoginListener() {     @Override     public void onFailure(Throwable throwable) {         fail();     }       Override     public void onSuccess(User customer) {     //..     } });

應用到我們自己的測試集合后,當得到預期之外的結果時,只是讓這一結果失敗。我們可以看到為什么在onFailure()函數中我們調用了 fail()。接下來,即使我用一個錯誤的用戶名也能通過這個測試。思前想后,測試似乎是按照代碼順序執行的,但并沒有等到回調函數的結果返回再向下執 行。

這顯然不是一個好方法。因為現在的程序經常通過異步任務和回調方法從后臺獲取數據。嘗試UIThread測試仍然不行。

***,我發現下面這種方法可以行得通。只是用簡單的CountDownLatch信號對象來實現wait-notify機制(你也可以用syncronized(lock){... lock.notify();},只是這樣代碼并不美觀而已)

那么之前的代碼就變成了下面的模樣:

final CountDownLatch signal = new CountDownLatch(1); mLoginManager.performLoginWithUsername("username", "password", new OnLoginListener() {     @Override     public void onFailure(Throwable throwable) {         fail();         signal.countDown();     }       Override     public void onSuccess(User customer) {         signal.countDown();     } }); signal.await();

到此,關于“Android中如何測試異步任務”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

牟定县| 吕梁市| 阿克苏市| 咸宁市| 屏东县| 饶河县| 淮安市| 新沂市| 石台县| 珲春市| 洞头县| 西贡区| 阳山县| 承德县| 琼结县| 井冈山市| 义马市| 马尔康县| 商丘市| 方山县| 根河市| 临清市| 南昌县| 瓦房店市| 林芝县| 泰州市| 绵阳市| 永定县| 乐安县| 四会市| 陆丰市| 贺州市| 綦江县| 广州市| 山东省| 潞城市| 富川| 正安县| 钦州市| 同江市| 英吉沙县|