Как протестировать сценарий исключения во время выполнения с помощью JUnit - PullRequest
0 голосов
/ 28 сентября 2019

У меня ниже класс, который мне нужно проверить.Я могу протестировать класс, но как мне проверить сценарий исключения в этом случае, так как я не могу издеваться над классом ObjectMapper.

package xyz.util;

import ...

public class JsonConverter {

    private static ObjectMapper mapper;

    static {
        mapper = new ObjectMapper();
        mapper.writerWithDefaultPrettyPrinter();
    }

    private JsonConverter() {}

    public static String toJson(Object object) {

        try {
            return mapper.writeValueAsString(object);
        } catch (JsonProcessingException e) {
            throw new AppplicationRuntimeException("Exception while converting object to JSON", e);
        }
    }


    public static <T> T toObject(String jsonString, Class<T> clazz) {
        try {
            return mapper.readValue(jsonString, clazz);
        } catch (IOException e) {
            throw new AppRuntimeException("Exception while converting JSON to Object", e);
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 28 сентября 2019

Если можешь - исключи статические звонки.Например, путем явного внедрения ObjectMapper в тестируемый класс через конструктор:

public class JsonConverter {

    private final ObjectMapper mapper;

    public JsonConverter(ObjectMapper mapper) {
       this.mapper = mapper;
    }

    // rest of the code
}

Однако, если изменение кода не является опцией, вы можете использовать Powermock для имитации статическоговызовы с исключениями.

Кроме того, для утверждения различных исключительных сценариев в сочетании с JUnit вы можете использовать AssertJ свободный API.

0 голосов
/ 28 сентября 2019

В junit 5 у вас есть assert.with Throwing.В 4 у вас есть атрибут в тестовой аннотации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...