Предзаполнение БД Postgres в тестконтейнере с помощью DbUnit в интегротестах
Всем привет.
Стек: Java 17, Spring Boot 3.1.2, DbUnit 2.7.3
Пытаюсь написать интегротест, который поднимет тестконтейнер с postgres, запустит миграцию liquibase и создаст нужные таблицы, а затем с помощью аннотации @DatabaseSetup наполнит таблицу дефолтными данными описанными в xml-датасете.
Мой датасет:
<dataset>
<shop id="TESTID" shop_type="Type1" has_source="false" version="2" group="TestGroup"/>
</dataset>
Проблема следующая: в таблице есть столбец "group" - а это зарезервированное слово. Если оставить как есть, при запуске выдает ошибку: Caused by: org.postgresql.util.PSQLException: ERROR: syntax error at or near "group"
Нашел вот такое решение, но не помогает. В датасете обернул group
<shop id="TESTID" shop_type="Type1" has_source="false" version="2" `group`="TestGroup"/>
В конфигурацию теста добавил configBean.setEscapePattern();
@Bean
DatabaseConfigBean configBean() {
final var configBean = new DatabaseConfigBean();
configBean.setDatatypeFactory(new PostgreDataTypeFactory());
//пробовал по разному
// configBean.setEscapePattern("[?]");
// configBean.setEscapePattern("[group]");
configBean.setEscapePattern("`?`");
return configBean;
}
@Bean DatabaseDataSourceConnectionFactoryBean dbUnitDatabaseConnection(DatabaseConfigBean configBean,
DataSource dataSource) {
final var factoryBean = new DatabaseDataSourceConnectionFactoryBean();
factoryBean.setDatabaseConfig(configBean);
factoryBean.setDataSource(dataSource);
factoryBean.setSchema("mySchemeName");
return factoryBean;
}
org.dbunit.dataset.DataSetException: Line 2: Element type "shop" must be followed by either attribute specifications, ">" or "/>".
Что делаю не так?