在Android中使用不同的类进行测试和正常运行



我正在尝试构建一个库,该库可以使用蓝牙与其他设备进行通信

为了实现此目的,我创建了一个这样的接口:

 interface IBluetoothAdapter {
     ....
 }

在正常运行中,我像这样使用:

 internal class BTAdapter : IBluetoothAdapter {
      private val mAdapter = BluetoothAdapter.getDefaultAdapter()
 }

我用它将消息发送到实际的蓝牙适配器

当我进行测试时,我会模拟Ibluetoothadapter,这起作用了

为了促进上述我的实际班级具有此实现:

class Communicator(val address:String) {
     private var mAdapter: IBluetoothAdapter = BTAdapter()
     @VisibleForTesting
     @TestOnly
     fun setAdapter(adapter: IBluetoothAdapter) {
         mAdapter = adapter
     }
     .....
}

有更好的方法吗?

基本上我想做的是应用程序在测试中运行以始终使用一个特定类(模拟(以及正常运行以始终使用另一个(我创建的一个(

时。

您的代码在做什么称为dependency_infoction

有更好的方法吗?

没有一种"更好"的方法可以做到这一点,但是有不同的方法可以取决于您使用的工具(请参阅为什么Do-do-i-i-n-ioc-container-有关详细信息(

我会以相同的方式实现它,因为您的代码可以在没有任何DI容器的情况下使用,因此它具有较少的外部依赖项。

相关内容

最新更新