我正在编写一个 JUnit 测试,用于使用 MockRxAndroidBle 将数据写入 BLE 特性。使用. addService(UUID, List<BluetoothGattCharacteristic>)
_ DeviceBuilder
特征本身是使用 CharacteristicBuilder 创建的。运行测试时,它会失败并显示消息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
in 中的实例返回 null。RxBleDeviceServices
调试器还显示该服务没有任何特征并且列表为空。我相信 null 是这个内部列表的默认值。
有没有办法创建一个模拟写入特性的 JUnit 测试?