Тесты Spring Boot и Джексон. Получите экземпляр ObjectMapper из настроек контекста (application.yml) в тестах без дополнJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Тесты Spring Boot и Джексон. Получите экземпляр ObjectMapper из настроек контекста (application.yml) в тестах без дополн

Сообщение Anonymous »

Я хочу знать, как лучше всего получить экземпляр ObjectMapper из настроек контекста в application.yml без «служебной» настройки (что означает WebAppConfiguration и ContextConfiguration< /code>) в Spring Boot, при этом в тестах загружается только минимальное количество классов.

Я уже это знаю, чтобы загрузить конфигурацию, связанную с Джексоном, в приложении. yml(

Код: Выделить всё

spring.jackson.xxx
), вы должны @Autowired Jackson2ObjectMapperBuilder и использовать builder.build() для получения ObjectMapper.
Итак, я создаю класс конфигурации:

Код: Выделить всё

@Configuration
public class JacksonConfig {
@Autowired
private Jackson2ObjectMapperBuilder objectMapperBuilder;

@Bean
public ObjectMapper objectMapper() {
return objectMapperBuilder.build();
}
}
И класс-оболочка:

Код: Выделить всё

@Service
@Slf4j
public class JsonConverter {

@Getter
@Autowired
private ObjectMapper mapper;

public String objectToJson(Object obj) {
try {
return mapper.writeValueAsString(obj);
} catch (JsonProcessingException e) {
log.error("Cannot serialize object {} to JSON", obj);
throw new ServiceException(ErrorCode.JSON_CONVERTER_EXCEPTION)
.addLog("log", e.getMessage());
}
}

public Object jsonToObject(Class c, String json) {
try {
return mapper.readValue(json, c);
} catch (IOException e) {
log.error("Cannot deserialize JSON as instance of class {}", c.getName());
throw ServiceException.wrap(e, ErrorCode.JSON_CONVERTER_EXCEPTION)
.addLog("json", json)
.addLog("target class", c.getName());
}
}

public String messageErrorToJson(String message) {
Map result = Collections.singletonMap("responseError", message);
return objectToJson(result);
}
}
Это работает в gradle bootRun, а также в таких тестах:

Код: Выделить всё

@Slf4j
@SpringBootTest // we can only launch the whole context to make Jackson2ObjectMapperBuilder to work
@WebAppConfiguration
@ContextConfiguration
class JsonConverterTest {

@Autowired
private JsonConverter jsonConverter;

...
Я знаю, что это работает, потому что при отладке останавливается точка останова в классе JacksonAutoConfiguration.

Но мне интересно, есть ли другой, более простой способ получить это. Почему мне нужно использовать @WebAppConfiguration и @ContextConfiguration? Почему @SpringBootTest не загружает значения application.yml Spring.jackson.xx?

Или, чтобы убедиться загружен файл application.yml, как ограничить загрузку классов в SpringBootTest, чтобы минимизировать количество загружаемых классов и ускорить тесты?

РЕДАКТИРОВАТЬ:
Если я удалю @WebAppConfiguration и ContextConfiguration и добавлю @SpringBootTest(class = MyApplication.class), он также загрузит весь контекст/ запустил все приложение и работает.

Подробнее здесь: https://stackoverflow.com/questions/581 ... ontext-set
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как указать на Application-local.yml вместо Application-dev.yml в IntelliJ?
    Anonymous » » в форуме JAVA
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Как преобразовать application.properties в application.yml в Spring Boot?
    Anonymous » » в форуме JAVA
    0 Ответы
    61 Просмотры
    Последнее сообщение Anonymous
  • Как преобразовать application.properties в application.yml в Spring Boot?
    Anonymous » » в форуме JAVA
    0 Ответы
    30 Просмотры
    Последнее сообщение Anonymous
  • Как преобразовать application.properties в application.yml в Spring Boot?
    Anonymous » » в форуме JAVA
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous
  • Spring Kafka SSL Setup в Spring Boot Application.yml
    Anonymous » » в форуме JAVA
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»