Ram*_*rma 8 android unit-testing mockito android-bluetooth
我正在尝试模拟测试蓝牙应用程序,但我创建一个BluetoothAdapter类的模拟对象的第一步是不工作!
我正在使用powermockito轻松模拟.
mBluetoothAdapter = (BluetoothAdapter)PowerMock.createMock(BluetoothAdapter.class);
Run Code Online (Sandbox Code Playgroud)
这失败了.使用以下堆栈跟踪
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)
Run Code Online (Sandbox Code Playgroud)
任何人都使用任何模拟框架进行蓝牙应用程序模拟?任何建议都会有所帮助
BluetoothAdapter在Android框架中声明了final,所以当你问这个问题时,它不能被嘲笑,无论是使用Mockito还是使用Robolectric。
然而,自那时以来,Android 单元测试发生了很大变化。使用最新版本的工具,当您构建单元测试时,工具会生成删除android.jar所有finals 的补丁。这使得所有 Android 类都可用于模拟。如今,如果您想模拟任何蓝牙代码,您可以通过标准方式进行。如果您更新到最新的工具,您已经尝试过的代码将“正常工作”。另外,RobolectricShadowBluetoothAdapter现在内置了一个类。
| 归档时间: |
|
| 查看次数: |
1254 次 |
| 最近记录: |