使用 Mock RxAndroidBle 模拟 BLECharacteristic Write
Mocking BLE Characteristic Write with MockRxAndroidBle
我正在编写 JUnit 测试,使用 MockRxAndroidBle 将数据写入 BLE 特性。正在使用 DeviceBuilder
上的 addService(UUID, List<BluetoothGattCharacteristic>)
方法将特征添加到模拟设备。特征本身是使用 CharacteristicBuilder 创建的。当测试为 运行 时,它失败并显示消息 java.lang.RuntimeException: Method setValue in android.bluetooth.BluetoothGattCharacteristic not mocked. See http://g.co/androidstudio/not-mocked for details."
引用的link表示单元测试中应使用默认值。
testOptions {
unitTests.returnDefaultValues = true
}
启用允许测试在特征设置中通过,但在尝试写入特征时失败。此时的例外是BleCharacteristicNotFoundException
。仔细检查后,似乎 RxBleDeviceServices
returns 中的 BluetoothGattService
实例在通过 UUID 检索特征时为 null。调试器还显示该服务没有任何特征并且列表为空。我相信 null 是这个内部列表的默认值。
有没有一种方法可以创建模拟写入特征的 JUnit 测试?
您需要 运行 使用 Roboelectric 进行测试。所以将其添加到您的单元测试 class 定义
@RunWith(RobolectricTestRunner.class)
我正在编写 JUnit 测试,使用 MockRxAndroidBle 将数据写入 BLE 特性。正在使用 DeviceBuilder
上的 addService(UUID, List<BluetoothGattCharacteristic>)
方法将特征添加到模拟设备。特征本身是使用 CharacteristicBuilder 创建的。当测试为 运行 时,它失败并显示消息 java.lang.RuntimeException: Method setValue in android.bluetooth.BluetoothGattCharacteristic not mocked. See http://g.co/androidstudio/not-mocked for details."
引用的link表示单元测试中应使用默认值。
testOptions {
unitTests.returnDefaultValues = true
}
启用允许测试在特征设置中通过,但在尝试写入特征时失败。此时的例外是BleCharacteristicNotFoundException
。仔细检查后,似乎 RxBleDeviceServices
returns 中的 BluetoothGattService
实例在通过 UUID 检索特征时为 null。调试器还显示该服务没有任何特征并且列表为空。我相信 null 是这个内部列表的默认值。
有没有一种方法可以创建模拟写入特征的 JUnit 测试?
您需要 运行 使用 Roboelectric 进行测试。所以将其添加到您的单元测试 class 定义
@RunWith(RobolectricTestRunner.class)