android - 如何在 Android 上测试 BLE 对象?

标签 android bluetooth-lowenergy android-ble android-ble-library

我正在学习在 Android 上通过低功耗蓝牙进行通信.. Here is an example app
源代码中有几个与蓝牙相关的对象,显然是最终类:

private BluetoothManager mBluetoothManager;
private BluetoothAdapter mBluetoothAdapter;
private BluetoothGatt mBluetoothGatt;
当然,我不想测试 BluetoothManager、BluetoothAdapter 或 BluetoothGatt 本身之类的库内容。但我想测试BluetoothLeService : Service这是在那个项目中写的。
我不知道,如何模拟这些 final BluetoothManager, BluetoothAdapter or BluetoothGatt对象。
  • 如何测试 BluetoothLeService ?
  • 我可以写普通单位test s 或者我需要写特殊的androidTests s 测试期间设备连接在哪里?
  • 当我将集成系统作为构建环境时,这会是什么样子?
  • 最佳答案

    当您的设备实际连接到另一个蓝牙设备时,您应该进行一些测试。

  • 确保您已经实现了与真正的蓝牙设备正确通信的样板代码。
  • 确保您正在读取/写入设备预期的正确特性。

  • 大多数代码都是样板代码,并且在任何使用蓝牙的应用程序中都是相同的。差异将是:
  • 服务、特性以及更新或从蓝牙设备读取信息的内容/时间。

  • 所以我会把你的测试分成两部分:
  • 简单地连接到蓝牙设备并从设备读取和写入的代码。此代码模块应可在任何应用程序中重复使用,并且不应包含任何应用程序独有的业务逻辑。这样,只有在更改此代码模块时,您才需要使用真实设备进行测试。
  • 您的应用程序独有的代码。这包括从蓝牙设备读取/写入信息后执行的所有业务逻辑。在这里,您可以编写一个模拟类,假装是您从中读取/写入信息的蓝牙设备。它可以充当应用程序特有的业务逻辑与实际连接蓝牙设备并与之交互的代码之间的一层。在您的自动化测试期间,它假装提供从蓝牙设备读取的模拟数据。当您想使用真实设备进行测试时,切换一个标志,并使用我在上一个要点中提到的代码让它读取和写入真实的蓝牙设备。

  • 示例应用程序中的大部分代码都是样板代码。您应该从中删除任何您的应用程序不需要的无关内容,并将其用作应用程序中与您的业务逻辑通信的层。

    关于android - 如何在 Android 上测试 BLE 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63274440/

    相关文章:

    android - 如何从一个字节中提取一个位并将其显示在 Android 的 TextView 上?

    Android BluetoothGatt 未收到特征通知 BluetoothGatt#writeDescriptor(desc) 返回 false

    java - 安卓。立即隐藏状态栏

    java - 每次我想运行或不运行时都创建线程的新实例

    java - AndEngine GenericPool 带有计时器,从池中添加 Sprite

    android - 使用 davibennun/laravel-push-notification 包的 Laravel 推送通知

    javascript - 为什么我通过 BLE 向设备发送数据时看不到任何通知?

    bluetooth-lowenergy - 微:bit Bluetooth Low Energy Hacking Persistence (High School Internship Project)

    audio - 谁能解释语音命令如何通过 Android(Nexus 播放器)中的蓝牙 Remote (Nexus 播放器 Remote )工作?

    android - RxAndroidBle - 如何断开所有连接的设备?