如何在Android上测试可扩展对象?

如何在Android上测试可扩展对象?,android,bluetooth-lowenergy,android-ble,android-ble-library,Android,Bluetooth Lowenergy,Android Ble,Android Ble Library,我正在学习在Android上通过蓝牙低能耗通信 源代码中有几个与蓝牙相关的对象,它们显然是最终的类: private BluetoothManager mBluetoothManager; private BluetoothAdapter mBluetoothAdapter; private BluetoothGatt mBluetoothGatt; 当然,我不想测试诸如BluetoothManager、BluetoothAdapter或BluetoothGatt本身之类的库内容。但是我想测试

我正在学习在Android上通过蓝牙低能耗通信

源代码中有几个与蓝牙相关的对象,它们显然是最终的类:

private BluetoothManager mBluetoothManager;
private BluetoothAdapter mBluetoothAdapter;
private BluetoothGatt mBluetoothGatt;
当然,我不想测试诸如BluetoothManager、BluetoothAdapter或BluetoothGatt本身之类的库内容。但是我想测试在那个项目中编写的
BluetoothLeService:Service

我不知道如何模拟这些
最终BluetoothManager、BluetoothAdapter或BluetoothGatt
对象

  • 如何测试
    蓝牙服务
  • 我是否可以编写普通单元
    测试
    s,或者是否需要在测试期间在设备连接的位置编写特殊的
    androidTests
    s
  • 当我将集成系统作为构建环境时,这会是什么样子

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

    • 确保您已经实现了与真正的蓝牙设备正确通信的样板代码
    • 确保您正在读取/写入设备预期的正确特性
    大部分代码都是样板文件,在任何使用Bluetooth的应用程序中都是一样的。区别将是:

    • 服务、特征以及更新或读取蓝牙设备信息的内容/时间
    因此,我将把您的测试分为两部分:

    • 只需连接到蓝牙设备并从该设备读写的代码。此代码模块应可在任何应用程序中重用,且不应包含应用程序特有的任何业务逻辑。这样,您只需要在更改此代码模块时使用真实设备进行测试

    • 应用程序特有的代码。这包括从蓝牙设备读取/写入信息后执行的所有业务逻辑。在这里,您可以编写一个模拟类,假装您正在从中读取/写入信息的蓝牙设备。它可以作为应用程序特有的业务逻辑与实际连接蓝牙设备并与之交互的代码之间的一层。在自动测试期间,它假装提供从蓝牙设备读取的模拟数据。当你想用一个真正的设备进行测试时,切换一个标志,让它使用我在前面的要点中提到的代码读写到一个真正的蓝牙设备


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

    您能否澄清一下测试的含义。在bluetoothLeService类中,它处理gatt(回调)发现服务等。那么您想要测试什么呢?使用服务create
    rivate BluetoothLeService mBluetoothLeService的功能,输入或输出数据的特性然后调用函数。我通过设备控制活动来实现这一点。如何在单元测试中模拟真正的蓝牙设备?