Spring Boot: автоматически настроенные JSON тесты
Чтобы проверить, что сериализация и десериализация этого объекта JSON работает должным образом, вы можете использовать аннотацию @JsonTest. @JsonTest автоматически настраивает доступный поддерживаемый преобразователь JSON, который может быть одной из следующих библиотек:
- Jackson ObjectMapper, любые @JsonComponent компоненты и любые Jackson модули
- Gson
- Jsonb
Если вам нужно настроить элементы автоконфигурации, вы можете использовать аннотацию @AutoConfigureJsonTesters.
Spring Boot включает помощников на основе AssertJ, которые работают с библиотеками JSONAssert и JsonPath, чтобы проверить, что JSON отображается должным образом. Классы JacksonTester, GsonTester, JsonbTester и BasicJsonTester могут использоваться для Jackson, Gson, Jsonb и Strings соответственно. Любые вспомогательные поля в тестовом классе могут быть @Autowired при использовании @JsonTest. В следующем примере показан тестовый класс для Jackson:
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.*;
import org.springframework.boot.test.autoconfigure.json.*;
import org.springframework.boot.test.context.*;
import org.springframework.boot.test.json.*;
import static org.assertj.core.api.Assertions.*;
@JsonTest
class MyJsonTests {
@Autowired
private JacksonTester
Вспомогательные классы JSON также можно использовать непосредственно в стандартных модульных тестах. Для этого вызовите метод initFields помощника в вашем методе @Before, если вы не используете @JsonTest.
Если вы используете помощники Spring Boot на основе AssertJ для подтверждения числового значения по заданному пути JSON, вы не сможете использовать isEqualTo в зависимости от типа. Вместо этого вы можете использовать AssertJ satisfies, чтобы утверждать, что значение соответствует данному условию. Например, в следующем примере утверждается, что фактическое число является значением с плавающей запятой, близким к 0,15 со смещением 0,01.
assertThat(json.write(message))
.extractingJsonPathNumberValue("@.test.numberValue")
.satisfies((number) -> assertThat(number.floatValue()).isCloseTo(0.15f, within(0.01f)));
Читайте также:
- Spring Boot: тестирование в фиктивной (mock) среде
- Spring Boot: тестирование, определение типа веб-приложения, определение конфигурации теста
- Spring Boot: тестирование, исключение тестовой конфигурации, использование аргументов приложения
Комментарии
Отправить комментарий