java - unit - android test module



使用Mockito核心創建最終課堂模擬? (1)

在github的例子中,我發現如何使用標準Mockito創建最終類的實例(BluetoothGatt.class):

...
@RunWith(RobolectricTestRunner.class)
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
public class OnBoardingServiceTest {

    private BluetoothGattCharacteristic characteristic;
    private OnBoardingService service;
    private BluetoothGattReceiver receiver = new BluetoothGattReceiver();

    @Before public void initialise() {
        BleDevice bleDevice = mock(BleDevice.class);
        when(bleDevice.getType()).thenReturn(BleDeviceType.WunderbarMIC);
        BluetoothGatt gatt = mock(BluetoothGatt.class);
...

但從Mockito常見問題

Mockito有什麼限制

  • 需要Java 1.5+
  • 不能嘲笑最後的課程
  • ...

我檢查它是從標準的android-sdk的BluetoothGatt,所以它看起來像模擬最後一課。 現在我嘗試建立項目,肯定這個測試工作。 核心mockito如何使模擬最終課程? 而如果它的代碼最終不工作,你有什麼想法如何使安卓儀器測試的最終類的模擬? (我已經嘗試PowerMock )。 謝謝


Robolectric旨在創建和替代Android標準類的實現,包括最終的類和方法。 在引擎蓋下,它與PowerMockito非常相似,使用它自己的類加載器來建立一個有利於自己模擬的類路徑。

Robolectric中的Android類的模擬實現被稱為陰影 ,而圖書館是不完整的; 您可能需要創建一個適合您的需求的自定義陰影

使用Mockito進行方法調用可能並不容易,但是您可以使用Robolectric方法來獲取陰影的實例,並編寫將方法參數保存到實例中的陰影實現(等等)。





android-instrumentation