Я пишу тест JUnit для записи данных в характеристику BLE с использованием MockRxAndroidBle. Характеристики добавляются к фиктивному устройству с использованием метода 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
. При ближайшем рассмотрении кажется, что экземпляр BluetoothGattService
в RxBleDeviceServices
возвращает null при получении характеристики по UUID. Отладчик также показывает, что служба не имеет никаких характеристик и список пуст. Я считаю, что null является значением по умолчанию для этого внутреннего списка.
Есть ли способ создать тест JUnit, который имитирует запись характеристики?