Как исправить TypeConverterSupport для Spring Boot 3.x при использовании классов ContextConfiguration?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как исправить TypeConverterSupport для Spring Boot 3.x при использовании классов ContextConfiguration?

Сообщение Anonymous »

У меня есть базовый yaml, например

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

myThing:
someValue: 10
и я провожу тесты и сталкиваюсь с исключениями форматирования

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

TypeConverterSupport.convertIfNecessary(TypeConverterSupport.java:80)
где оно пытается преобразовать строки в целые числа, или целые числа в строки, или строки в LocalDate, все, что мое приложение может делать нормально, когда оно загружает всю Контекст Spring Boot с аннотацией типа @SpringBootTest
edit: я думаю, что мне просто не хватает необходимого класса для этого поведения в @ContextConfiguration, но я не могу найти его хоть убей, и я потратил на это несколько часов.

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

package com.example.demo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class MyThing {
@Value("${myThing.myValue}")
private Integer myValue;

public Integer getMyValue() {
return myValue;
}
}

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

package com.example.demo;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;

import static org.junit.jupiter.api.Assertions.assertEquals;

@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = {MyThing.class}) // Won't be able to load the context
class DemoApplicationTests {

@Autowired
private MyThing myThing;

@Test
void contextLoads() {
assertEquals(10, myThing.getMyValue());
}

}

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

myThing:
myValue: 10
Вызвано: java.lang.NumberFormatException: Для входной строки: "${myThing.myValue}"
в java.base/java. lang.NumberFormatException.forInputString(NumberFormatException.java:67)
в java.base/java.lang.Integer.parseInt(Integer.java:654)
в java.base/java.lang.Integer. valueOf(Integer.java:999)
в org.springframework.util.NumberUtils.parseNumber(NumberUtils.java:203)
в org.springframework.beans.propertyeditors.CustomNumberEditor.setAsText(CustomNumberEditor.java: 115)
в org.springframework.beans.TypeConverterDelegate.doConvertTextValue(TypeConverterDelegate.java:439)
в org.springframework.beans.TypeConverterDelegate.doConvertValue(TypeConverterDelegate.java:412)
в org .springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:161)
на org.springframework.beans.TypeConverterSupport.convertIfNecessary(TypeConverterSupport.java:80)
... еще 39

Использование @SpringBootTest загружает полный контекст со службой конвертера, и тест проходит.

Подробнее здесь: https://stackoverflow.com/questions/790 ... extconfigu
Ответить

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

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

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

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

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