Android BluetoothAdapter Mocking
Я пытаюсь протестировать приложение Bluetooth, но мой первый шаг по созданию фиктивного объекта класса BluetoothAdapter не работает!!
Я использую powermockito с легкой насмешкой.
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)
Кто-нибудь использовал какие-либо насмешливые рамки для насмешек в приложениях Bluetooth? Любые предложения будут очень полезны
1 ответ
BluetoothAdapter
в рамках Android объявлен final
Таким образом, в то время, когда вы задавали этот вопрос, его нельзя было высмеять ни с помощью Mockito, ни с помощью Robolectric.
Однако с тех пор Android-тестирование сильно изменилось. В последних версиях инструментов при создании модульных тестов инструменты генерируют исправленные android.jar
со всеми final
с удален. Это делает все классы Android доступными для насмешек. В настоящее время, если вы хотите макетировать любой код Bluetooth, вы можете сделать это стандартным способом. Код, который вы уже попробовали, будет "просто работать", если вы обновите до последних инструментов. Кроме того, Robolectric имеет ShadowBluetoothAdapter
класс построен в настоящее время.