我在GitHub里面找到了一个例子,展示了如何使用标准的Mockito创建一个final类(BluetoothGatt.class)的实例:查看链接
...
@RunWith(RobolectricTestRunner.class)
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
public class OnBoardingServiceTest {
private BluetoothGattCharacteristic characteristic;
private OnBoardingService service;
private BluetoothGattReceiver receiver = new BluetoothGattReceiver();
@Before public void initialise() {
BleDevice bleDevice = mock(BleDevice.class);
when(bleDevice.getType()).thenReturn(BleDeviceType.WunderbarMIC);
BluetoothGatt gatt = mock(BluetoothGatt.class);
...
从 Mockito FAQ 可得:
Mockito 的限制有哪些?
- 需要 java 1.5+
- 无法 mock final 类
- ...
我查了一下,它是标准的 Android-sdk 中的 BluetoothGatt,所以看起来像是 final 类。现在我尝试构建项目,确保这个测试可以工作。 如何使用核心 mockito 来模拟 final 类? 如果代码最终不起作用,您有没有任何想法可以为 Android 测试仪测试创建 final 类的模拟?(我已经尝试过PowerMock)。谢谢