org.powermock.reflect.exceptions.ConstructorNotFoundException: не удалось найти конструктор с типами параметров [null] - PullRequest
1 голос
/ 24 апреля 2020

Я работаю на примере Android и Power Mockito. В этом примере я изо всех сил пытаюсь заставить тестовый пример работать и получаю следующую ошибку

public class UtilHelper {
    public static final Gson customGson = new GsonBuilder().registerTypeHierarchyAdapter(byte[].class,
            new ByteArrayToBase64TypeAdapter()).create();

    private static class ByteArrayToBase64TypeAdapter implements JsonSerializer<byte[]>, JsonDeserializer<byte[]> {
        public ByteArrayToBase64TypeAdapter(){

        }

        public byte[] deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
            return Base64.decode(json.getAsString(), Base64.NO_WRAP);
        }

        public JsonElement serialize(byte[] src, Type typeOfSrc, JsonSerializationContext context) {
            return new JsonPrimitive(Base64.encodeToString(src, Base64.NO_WRAP));
        }
    }
}

Ошибка:

org.powermock.reflect.exceptions.ConstructorNotFoundException: Failed to lookup constructor with parameter types [ null ] in class com.example.UtilHelper.

Тестовый пример, который я разработал

@RunWith(PowerMockRunner.class)
@PrepareForTest({UtilHelper.class})
public class GsonHelperTest {
    @Test
    public void testByteArrayToBase64TypeAdapter() throws Exception {
        UtilHelper UtilHelper = new UtilHelper();

        PowerMockito.mockStatic(UtilHelper.class);
        UtilHelper spy = PowerMockito.spy(UtilHelper);

        PowerMockito.whenNew(UtilHelper.class)
                .withParameterTypes(Mockito.any())
        .withArguments(Mockito.isA(UtilHelper.class)).thenReturn(UtilHelper);

        Class clazz = Whitebox.getInnerClassType(UtilHelper.class, "ByteArrayToBase64TypeAdapter");

        Constructor constructor = Whitebox.getConstructor(clazz, UtilHelper.class);
        JsonSerializer innerClassSer = (JsonSerializer) constructor.newInstance(new UtilHelper());
        JsonDeserializer innerClassDes = (JsonDeserializer) constructor.newInstance(new UtilHelper());
        innerClassDes.deserialize(Mockito.any(), Mockito.any(), Mockito.any());
    }
}
...