MockRxAndroidBle を使用して BLE 特性にデータを書き込むための JUnit テストを作成しています。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 で特性を取得すると、BluetoothGattService
インスタンスが null を返すようです。RxBleDeviceServices
デバッガーは、サービスに特性がなく、リストが null であることも示しています。この内部リストのデフォルト値は null だと思います。
特性への書き込みをモックする JUnit テストを作成する方法はありますか?