使用Robolectric在android 4.3中测试BluetoothAdapter

使用Robolectric在android 4.3中测试BluetoothAdapter,第1张

概述在我的 Android应用程序中,有以下代码: BluetoothManager bm = (BluetoothManager)activity.getSystemService(Context.BLUETOOTH_SERVICE);BluetoothAdapter ba = bm.getAdapter(); 我想使用Robolectric进行单元测试.我正在使用Robolectric 2.2. 在我的 Android应用程序中,有以下代码:

BluetoothManager bm = (BluetoothManager)activity.getSystemService(Context.BLUetoOTH_SERVICE);BluetoothAdapter ba = bm.getAdapter();

我想使用Robolectric进行单元测试.我正在使用Robolectric 2.2.
但是我发现bm是null,我不知道如何模仿它.

解决方法 挑战

测试蓝牙和其他系统服务的挑战是这些类都是最终的.

困难的方法(如果你愿意,可以跳过并转到powermock解决方案)

因此,如果你想要注入任何其他东西,你需要在最终的类周围做一个包装,然后提供一个实现转发到实际的蓝牙类和一个嘲笑你的东西的替代.但是然后需要更新所有编码以直接使用该包装而不是最终类.

PowerMock解决方案

PowerMock然而应该能够处理这些final classes.摘要(更多细节请点击链接)

>在测试用例的类级别使用@RunWith(powermockrunner.class)注释.>在测试用例的类级别使用@PrepareForTest(ClassWithFinal.class)注释.>使用PowerMock.createMock(ClassWithFinal.class)为该类的所有方法创建一个模拟对象(让我们称之为mockObject).>使用PowerMock.replay(mockObject)将模拟对象更改为重放模式.>使用PowerMock.verify(mockObject)将模拟对象更改为验证模式.

总结

以上是内存溢出为你收集整理的使用Robolectric在android 4.3中测试BluetoothAdapter全部内容,希望文章能够帮你解决使用Robolectric在android 4.3中测试BluetoothAdapter所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1125238.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存