Mocking-Methode ruft mit macht mockito - org.powermock.api.mockito.ClassNotPreparedException

Habe ich ein image loader-Klasse, und ich brauche zum testen einige statische Methoden. Da Mockito unterstützt keine statischen Methoden, die ich eingeschaltet, um Strom Mockito. Aber die statische Methode Teste ich eine Methode aufrufen

 Base64.encodeToString(byteArray, Base64.DEFAULT);

Zu verhöhnen, bin ich mit mockStatic - Methode, wie unten mit @PrepareForTest annotation.

 PowerMockito.mockStatic(Base64.class);

Aber Android studio ist wieder in mir immer noch die Rückkehr mir eine Fehlermeldung wie unten.

org.powermock.api.mockito.ClassNotPreparedException: Die Klasse
android.util.Base64 nicht bereit für den test. Zur Vorbereitung dieser Klasse hinzufügen
Klasse auf das '@PrepareForTest' annotation.

Unten ist mein kompletter code.

Code getestet werden:

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Base64;
import android.widget.ImageView;

  public static String convertBitmapToBase64(Bitmap imageBitmap, boolean withCompression) {
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    imageBitmap.compress(Bitmap.CompressFormat.PNG, 120, byteArrayOutputStream);
    byte[] byteArray = byteArrayOutputStream.toByteArray();
    return Base64.encodeToString(byteArray, Base64.DEFAULT);
}

Test der Klasse code

import android.graphics.Bitmap;
import android.util.Base64;
import org.junit.Before;
import org.junit.runner.RunWith;
import org.mockito.MockitoAnnotations;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import org.testng.annotations.Test;

@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 dependencies

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'
zeigen Sie uns Ihre importieren
Importe Hinzugefügt. Die test-Klasse und der Klasse getestet werden, die dieselbe Einfuhren.
verwenden Sie junit oder testng ? da der test-annotation ist importiert von TestNG.
Ich änderte den import von TestNG, Junit und jetzt bin ich immer den Fehler als unten. "=============================================== Standard-Suite Total tests run: 0, Failures: 0, Skips: 0 =============================================== Prozess beendet mit exit-code 0 Leer test suite. "Ich bin nicht sicher, dass die Test-framework zu verwenden.
werfen Sie einen Blick auf developer.android.com/studio/test/index.html um zu verstehen, wie erstellen von unit-Tests und führen diese aus.

InformationsquelleAutor Ajith Memana | 2016-09-09

Schreibe einen Kommentar