【发布时间】:2017-01-29 04:28:31
【问题描述】:
我有一个图像加载器类,我想在其中测试一些静态方法。由于 Mockito 不支持静态方法,我切换到 Power Mockito。但是我正在测试的静态方法有一个方法调用
Base64.encodeToString(byteArray, Base64.DEFAULT);
为了模拟这个,我使用如下 mockStatic 方法。
PowerMockito.mockStatic(Base64.class);
但 Android Studio 正在返回我仍然返回如下错误。
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'
【问题讨论】:
标签: android mockito powermock android-testing powermockito