У меня есть метод, который использует AsyncTask.executeOnExecutor()
, но когда я пытаюсь имитировать объект и вызывать executeOnExecutor()
, я получаю сообщение об ошибке:
Метод executeOnExecutor в android .os.AsyncTask не издевались
Я использую Android SDK 28 и PowerMockito 2.0.7
Ниже показано, что я пытаюсь сделать:
public class FieldLoader extends AsyncTask<Void, Integer, List<Field>>
{
private FieldDatabase fieldDatabase;
public FieldLoader(FieldDatabase fieldDatabase) {
super();
this.fieldDatabase = fieldDatabase;
}
}
public class ClassUnderTest
{
public ClassUnderTest() {
updateFields();
}
private void updateFields() {
FieldLoader fieldLoader = new FieldLoader(Database.getInstance());
fieldLoader.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
}
@RunWith(PowerMockRunner.class)
@PrepareForTest({ClassUnderTest.class,
Database.class,
FieldLoader.class})
public class MyTests {
@Test
public void testFieldLoader() {
Database mockDatabase = Mockito.mock(Database.class);
PowerMockito.mockStatic(Database.class);
PowerMockito.when(Database.getInstance()).thenReturn(mockDatabase);
FieldLoader mockFieldLoader = Mockito.mock(FieldLoader.class);
PowerMockito.whenNew(FieldLoader.class).withAnyArguments().thenReturn(mockFieldLoader);
PowerMockito.when(mockFieldLoader.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR)).thenReturn(null);
PowerMockito.when(mockFieldLoader.executeOnExecutor(Mockito.any(Executor.class), ArgumentMatchers.<Void>any())).thenReturn(null);
ClassUnderTest cut = new ClassUnderTest();
}
}
У меня есть пробовал множество способов имитировать executeOnExecutor
, но не удалось.
Что мне нужно сделать, чтобы имитировать метод executeOnExecutor
?