0

我正在编写一个 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 检索特征时,似乎BluetoothGattServicein 中的实例返回 null。RxBleDeviceServices调试器还显示该服务没有任何特征并且列表为空。我相信 null 是这个内部列表的默认值。

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

4

1 回答 1

0

您需要使用 Roboelectric 运行测试。因此,将其添加到您的单元测试类定义中

@RunWith(RobolectricTestRunner.class)

于 2017-10-29T03:05:52.833 回答