使用 Mockito-core 创建最终 class 的模拟?
Use Mockito-core for create mock of final class?
我 find in github 示例如何使用标准 Mockito 生成最终实例 class (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 :
What are the limitations of Mockito
- Needs java 1.5+
- Cannot mock final classes
- ...
我检查它是来自标准 android-sdk 的 BluetoothGatt,所以它看起来像模拟最终版 class。现在我尝试构建项目,确保此测试有效。
它如何使用核心 mockito 在此处制作 mock final class?
如果代码最终无法正常工作,您是否知道如何为 android 仪器测试模拟最终 class? (我已经 )。谢谢
Robolectric 旨在创建和替代 Android 标准 类 的实现,包括最终 类 和方法。在底层,它的工作方式与 PowerMockito 非常相似,使用它自己的类加载器来建立一个有利于它自己的模拟的类路径。
Android 类 在 Robolectric 中的模拟实现被称为 shadows,库不完整;您可能想要 create a custom shadow 满足您的需求。
使用 Mockito 进行方法调用可能仍然不容易,但您可以使用 Robolectric 方法获取影子实例,并编写将方法参数保存到实例中的影子实现(等等) .
我 find in github 示例如何使用标准 Mockito 生成最终实例 class (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 :
What are the limitations of Mockito
- Needs java 1.5+
- Cannot mock final classes
- ...
我检查它是来自标准 android-sdk 的 BluetoothGatt,所以它看起来像模拟最终版 class。现在我尝试构建项目,确保此测试有效。
它如何使用核心 mockito 在此处制作 mock final class?
如果代码最终无法正常工作,您是否知道如何为 android 仪器测试模拟最终 class? (我已经
Robolectric 旨在创建和替代 Android 标准 类 的实现,包括最终 类 和方法。在底层,它的工作方式与 PowerMockito 非常相似,使用它自己的类加载器来建立一个有利于它自己的模拟的类路径。
Android 类 在 Robolectric 中的模拟实现被称为 shadows,库不完整;您可能想要 create a custom shadow 满足您的需求。
使用 Mockito 进行方法调用可能仍然不容易,但您可以使用 Robolectric 方法获取影子实例,并编写将方法参数保存到实例中的影子实现(等等) .