2016-09-21 20 views
0

我目前正在嘗試爲Android應用程序編寫一些測試,但沒有UI(簡單後臺服務)。我的Android服務基本上會調用另一個關注大部分工作的類。正是這一類,我想考,但在這我使用的東西,如:爲使用android.os.Build的某些字段的Android應用程序編寫測試

  • Build.SERIAL
  • Build.VERSION.RELEASE
  • BatteryManager.BATTERY_HEALTH_COLD

創建一個JSON對象。

這些值在我的測試中爲空,因爲我試圖在不依賴Android設備的情況下進行測試。有沒有辦法在測試過程中模擬這些值或更改它們的默認值?我的測試真正想要驗證的是,我正在使用這些值構建的JSON對象已正確構建。

回答

1

有沒有辦法在測試過程中模擬這些值或更改它們的默認值?

對於Android的,我們使用一個名爲Mockito

一個簡單的方法庫做你想做的是什麼:

// create mock 
    YourBackgroundService test = Mockito.mock(YourBackgroundService.class); 

    // define return value for method getSerial() 
    when(test.getSerial()).thenReturn("42UNIV"); 

    // use mock in test.... 
    assertEquals(test.getSerial(), "42UNIV"); 
+0

關於這個事情是,我沒有這些的方法像getSerial()這樣的字段,我只是使用Build.SERIAL。例如: 'androidSystem.setSerialNumber(Build.SERIAL);' – Tuco

+0

在這種情況下,爲您的android系統設置一個getter方法非常簡單,如 'androidSystem.getSerialNumber(){return serialNumber;}'和'androidSystem .setSerialNumber(String serialNumber){this.serialNumber = serialNumber; }' getter/setter的另一個例子:http://stackoverflow.com/a/2036988/5097773 –

+0

所以最後你是怎麼解決用Mockito嘲笑'android.os.Build.SERIAL'的?這個答案並沒有給出任何線索...... – Guillaume