我正在编写一个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测试?
答案 0 :(得分:0)
您需要使用Roboelectric进行测试。所以将它添加到您的单元测试类定义
@RunWith(RobolectricTestRunner.class)