Имитация записи характеристик BLE с помощью MockRxAndroidBle

Я пишу тест 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, который имитирует запись характеристики?


person Joe Rider    schedule 03.07.2017    source источник


Ответы (1)


Вам нужно запустить тест с помощью Roboelectric. Так что добавьте это в определение класса модульного теста

@RunWith(RobolectricTestRunner.класс)

person user313724    schedule 29.10.2017