2017-07-03 81 views
0

我在寫一個JUnit測試,用於使用MockRxAndroidBle將數據寫入BLE特性。使用DeviceBuilder上的addService(UUID, List<BluetoothGattCharacteristic>)方法將特徵添加到模擬設備中。特性本身是使用CharacteristicsBuilder創建的。測試運行時,失敗並顯示消息java.lang.RuntimeException: Method setValue in android.bluetooth.BluetoothGattCharacteristic not mocked. See http://g.co/androidstudio/not-mocked for details."Mocking BLE特性使用MockRxAndroidBle寫入

引用的鏈接指示應在單元測試中使用默認值。

testOptions { unitTests.returnDefaultValues = true }

啓用,允許試驗,讓過去的特性設置,但試圖寫入特性時失敗。此時的例外是BleCharacteristicNotFoundException。仔細檢查後,RxBleDeviceServices中的BluetoothGattService實例似乎在通過UUID檢索特徵時返回null。調試器還顯示該服務沒有任何特性,列表爲空。我相信null是這個內部列表的默認值。

有沒有辦法創建一個JUnit測試來模擬寫入特性?

回答

0

您需要使用Roboelectric運行測試。因此,將此添加到您的單元測試類定義中

@RunWith(RobolectricTestRunner.class)