У меня есть класс загрузчика изображений, и я хотел протестировать некоторые статические методы в нем. Поскольку Mockito не поддерживает статические методы, я переключился на Power Mockito. Однако статический метод я тестирование имеет вызов методаPower Mockito возвращает ошибку org.powermock.api.mockito.ClassNotPreparedException
Base64.encodeToString(byteArray, Base64.DEFAULT);
издеваться этого я использую mockStatic метод, как показано ниже.
PowerMockito.mockStatic(Base64.class);
Но студия Android возвращает мне все еще возвращающую мне ошибку, как показано ниже.
org.powermock.api.mockito.ClassNotPreparedException: Класс android.util.Base64 не готов к испытанию. Чтобы подготовить этот класс, добавьте класс в аннотацию '@PrepareForTest'.
Ниже приводится мой полный код.
@RunWith(PowerMockRunner.class)
@PrepareForTest({Base64.class})
public class ImageLoaderTest {
@Test
public void testConvertBitmap(){
byte[] array = new byte[20];
PowerMockito.mockStatic(Base64.class);
PowerMockito.when(Base64.encodeToString(array, Base64.DEFAULT)).thenReturn("asdfghjkl");
Bitmap mockedBitmap= PowerMockito.mock(Bitmap.class);
String output = ImageLoaderUtils.convertBitmapToBase64(mockedBitmap);
assert (!output.isEmpty());
}
}
Gradle зависимостей
testCompile 'junit:junit:4.12'
testCompile 'org.powermock:powermock:1.6.5'
testCompile 'org.powermock:powermock-module-junit4:1.6.5'
testCompile 'org.powermock:powermock-api-mockito:1.6.5'