私はイメージローダークラスを持っており、静的メソッドをテストしたかったのです。 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'