使用MockRxAndroidBle模拟BLE特性写入

时间:2017-07-03 21:58:31

标签: android unit-testing rxandroidble

我正在编写一个JUnit测试,用于使用MockRxAndroidBle将数据写入BLE特征。使用addService(UUID, List<BluetoothGattCharacteristic>)上的DeviceBuilder方法将特征添加到模拟设备。使用CharacteristicsBuilder创建特征本身。运行测试时,它会失败并显示消息java.lang.RuntimeException: Method setValue in android.bluetooth.BluetoothGattCharacteristic not mocked. See http://g.co/androidstudio/not-mocked for details."

引用的链接表示应在单元测试中使用默认值。

testOptions { unitTests.returnDefaultValues = true }

启用允许测试在特性设置中超过,但在尝试写入特征时失败。此时的例外是BleCharacteristicNotFoundException。经过仔细检查,当用UUID检索特征时,BluetoothGattService中的RxBleDeviceServices实例似乎返回null。调试器还显示该服务没有任何特征,列表为空。我相信null是这个内部列表的默认值。

有没有办法创建一个模拟写入特征的JUnit测试?

1 个答案:

答案 0 :(得分:0)

您需要使用Roboelectric进行测试。所以将它添加到您的单元测试类定义

@RunWith(RobolectricTestRunner.class)