2017-01-09 30 views
0

我正在使用Junit和Mackito測試我的應用程序,目前爲止測試方法進展順利,但沒有使用需要網絡操作的方法,如何正確測試它們,以便調用assert從後端獲取數據後?需要網絡操作的Android MVP測試方法

+1

模擬後端數據。不要實際聯繫後端 –

+0

,但這是後端的一些邏輯,我需要驗證結果是好的? –

+1

你可以看看這個示例項目http://github.com/mmirhoseini/marvel和這篇文章https://hackernoon.com/yet-another-mvp-article-part-1-lets-get-to- know-the-project-d3fd553b3e21以更熟悉MVP。 –

回答

1

一般來說,你應該測試你的應用程序,而不是服務器端的邏輯。所以只需模擬網絡電話的方法。

但是,如果你想測試應用程序本身的網絡層,有很好的方法,我建議,要做到這一點 - WireMock

簡單地說,它會創建本地運行的Web服務器,響應與預定義的響應。

1

不是一個好主意,依賴於網絡調用的測試方法。 更好地測試後端,並在客戶端進行模擬。

無論如何,如果你想等待數據使用:Thread.sleep(Xms)在網絡調用之後和斷言之前的測試方法。

@Test 
public void testcase() throws InterruptedException { 
    // make actions and network call 

    // Wait, for example 2 seconds. It depends a lot of connection 
    Thread.sleep(2000); 

    // Then assert whatever you want 
} 
+1

使用'Thread.sleep'的可怕想法。你永遠不應該那樣做。 – Divers

+0

@潛水員就像我說的那樣,它解決了很多連接時間和質量問題。但是,有沒有其他理由不使用它?謝謝你的回答。 – adalPaRi

+0

你對你的問題回答 - 它取決於網絡連接,結果你的測試可能因爲連接速度慢而失敗,這會使測試失效。即使你想測試真正的服務器(這是個壞主意),只需在JVM上測試它,並以同步方式進行網絡查詢即可。 – Divers