Я пишу тесты и не могу изменить существующий код.
Мой текущий проект использует OpenAPI для создания DTO на основе описаний YAML.
Эти DTO расположены в папке /target и они не являются управляемыми Spring bean-компонентами.
Объекты ссылаются на эти DTO, например:
@Entity
@Table(name = "...", schema = "...")
public class MyEntity Serializable {
@Basic
@Column(name = "status")
@Enumerated(EnumType.STRING)
private Status status;
@Basic
@Type(JsonBinaryType.class)
@Column(name = "history", columnDefinition = "jsonb", updatable = false)
private List history = new ArrayList();
@Basic
@Type(JsonBinaryType.class)
@Column(name = "users", columnDefinition = "jsonb")
private UserDTO users = new UserDTO();
...
Теперь, когда я пытаюсь написать интеграционные тесты (например, тесты Entity или тесты репозитория), я получаю сообщение об ошибке. Если я укажу DTO в конфигурации (что, вероятно, неверно, поскольку это не bean-компонент):
@Bean
public HistoryDTO getHistoryDTO() {
return new HistoryDTO();
}
Тогда возникает эта ошибка:
org.springframework.beans.factory.BeanDefinitionStoreException: Failed
to класс конфигурации синтаксического анализа [....EntityTestConfiguration] в
org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:179)
~[spring-context-6.1.2.jar:6.1.2] Вызвано:
java.lang .NoClassDefFoundError: ../HistoryDTO
Если я не указывайте DTO в конфигурации, то возникает эта ошибка:
org.springframework.beans.factory.BeanCreationException: Error
создание bean-компонента с именем 'entityManagerFactory' определен в пути к классу
resource
[org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]:
Невозможно загрузить класс [...MyEntity] в
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1773)
~[spring-beans-6.1.2 .jar:6.1.2] Причина:
java.lang.TypeNotPresentException: Тип ....HistoryDTO отсутствует
Как добавить сгенерированные DTO в путь к классам для тестов Spring Boot? Правильно ли вообще, если сущности ссылаются на DTO?
Я пытаюсь начать примерно с этого:
@ComponentScan(basePackages = {"....entity"})
@EnableAutoConfiguration
public class EntityTestConfiguration {
@Bean
public MyEntity getMyEntity() {
return new MyEntity();
}
// @Bean
// public HistoryDTO getHistoryDTO() {
// return new HistoryDTO();
// }
}
@DataJpaTest
@ContextConfiguration(classes = {EntityTestConfiguration.class})
@Import(MyEntity.class)
class MyEntityTest {
@Autowired
private TestEntityManager em;
@Test
void test() {
var entity = new MyEntity();
entity.setSomeField(true);
assertNotNull(em);
}
}
Подробнее здесь: https://stackoverflow.com/questions/792 ... boot-tests
Как добавить пути сгенерированных DTO в путь к классам для тестов Spring Boot? ⇐ JAVA
Программисты JAVA общаются здесь
1734209675
Anonymous
Я пишу тесты и не могу изменить существующий код.
Мой текущий проект использует OpenAPI для создания DTO на основе описаний YAML.
Эти DTO расположены в папке /target и они не являются управляемыми Spring bean-компонентами.
Объекты ссылаются на эти DTO, например:
@Entity
@Table(name = "...", schema = "...")
public class MyEntity Serializable {
@Basic
@Column(name = "status")
@Enumerated(EnumType.STRING)
private Status status;
@Basic
@Type(JsonBinaryType.class)
@Column(name = "history", columnDefinition = "jsonb", updatable = false)
private List history = new ArrayList();
@Basic
@Type(JsonBinaryType.class)
@Column(name = "users", columnDefinition = "jsonb")
private UserDTO users = new UserDTO();
...
Теперь, когда я пытаюсь написать интеграционные тесты (например, тесты Entity или тесты репозитория), я получаю сообщение об ошибке. Если я укажу DTO в конфигурации (что, вероятно, неверно, поскольку это не bean-компонент):
@Bean
public HistoryDTO getHistoryDTO() {
return new HistoryDTO();
}
Тогда возникает эта ошибка:
org.springframework.beans.factory.BeanDefinitionStoreException: Failed
to класс конфигурации синтаксического анализа [....EntityTestConfiguration] в
org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:179)
~[spring-context-6.1.2.jar:6.1.2] Вызвано:
java.lang .NoClassDefFoundError: ../HistoryDTO
Если я не указывайте DTO в конфигурации, то возникает эта ошибка:
org.springframework.beans.factory.BeanCreationException: Error
создание bean-компонента с именем 'entityManagerFactory' определен в пути к классу
resource
[org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]:
Невозможно загрузить класс [...MyEntity] в
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1773)
~[spring-beans-6.1.2 .jar:6.1.2] Причина:
java.lang.TypeNotPresentException: Тип ....HistoryDTO отсутствует
Как добавить сгенерированные DTO в путь к классам для тестов Spring Boot? Правильно ли вообще, если сущности ссылаются на DTO?
Я пытаюсь начать примерно с этого:
@ComponentScan(basePackages = {"....entity"})
@EnableAutoConfiguration
public class EntityTestConfiguration {
@Bean
public MyEntity getMyEntity() {
return new MyEntity();
}
// @Bean
// public HistoryDTO getHistoryDTO() {
// return new HistoryDTO();
// }
}
@DataJpaTest
@ContextConfiguration(classes = {EntityTestConfiguration.class})
@Import(MyEntity.class)
class MyEntityTest {
@Autowired
private TestEntityManager em;
@Test
void test() {
var entity = new MyEntity();
entity.setSomeField(true);
assertNotNull(em);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79281323/how-to-add-paths-of-generated-dtos-to-classpath-for-spring-boot-tests[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия