Android蓝牙适配器模拟

Android蓝牙适配器模拟,android,unit-testing,mockito,android-bluetooth,Android,Unit Testing,Mockito,Android Bluetooth,我正在尝试模拟测试蓝牙应用程序,但创建BluetoothAdapter类的模拟对象的第一步不起作用 我正在使用powermockito和easy mock mBluetoothAdapter = (BluetoothAdapter)PowerMock.createMock(BluetoothAdapter.class); 这是失败的。使用以下堆栈跟踪 java.lang.IllegalArgumentException: No visible constructors in class an

我正在尝试模拟测试蓝牙应用程序,但创建BluetoothAdapter类的模拟对象的第一步不起作用

我正在使用powermockito和easy mock

 mBluetoothAdapter = (BluetoothAdapter)PowerMock.createMock(BluetoothAdapter.class);
这是失败的。使用以下堆栈跟踪

java.lang.IllegalArgumentException: No visible constructors in class android.bluetooth.BluetoothAdapter
at org.easymock.internal.DefaultClassInstantiator.getConstructorToUse(DefaultClassInstantiator.java:94)
at org.easymock.internal.AndroidClassProxyFactory.createProxy(AndroidClassProxyFactory.java:48)
at org.easymock.internal.MocksControl.createMock(MocksControl.java:114)
at org.easymock.internal.MocksControl.createMock(MocksControl.java:88)
at org.easymock.internal.MocksControl.createMock(MocksControl.java:79)
at org.powermock.api.easymock.PowerMock.doCreateMock(PowerMock.java:2212)
at org.powermock.api.easymock.PowerMock.doMock(PowerMock.java:2163)
at org.powermock.api.easymock.PowerMock.createMock(PowerMock.java:89)
at com.xxx.blesimplesample.test.MainActivityTest.setUp(MainActivityTest.java:59)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1710)

有人使用过蓝牙应用程序模拟的模拟框架吗?任何建议都是有用的

BluetoothAdapter
在Android框架中已声明为最终版,因此在您提出这个问题时,无论是使用Mockito还是使用Robolectric,都无法对其进行模拟

然而,自那以后,Android单元测试发生了很大的变化。对于这些工具的最新版本,当您构建单元测试时,这些工具会生成一个补丁的
android.jar
,并删除所有
final
s。这使得所有Android类都可用于模拟。现在,如果你想模仿任何蓝牙代码,你可以用标准的方式。如果您更新到最新的工具,您已经尝试过的代码将“正常工作”。或者,Robolectric现在内置了一个
ShadowBluetoothAdapter