2013-12-16 5 views
4

Я использую DBUnit во время тестов интеграции для издевательских данных для устаревшего проекта Spring/Hibernate, который я унаследовал. К сожалению, давным-давно кто-то решил, что было бы неплохо иметь пользовательскую таблицу, называемую пользователем, которая является зарезервированным ключевым словом в нашей БД. Затем это было решено путем переименования сопоставления таблицы сущностей в `user`, который в настоящее время живет на протяжении веков.Работа с зарезервированными символами в DBUnit

Как я уже через пару лет начал интегрировать тестирование, это представляет проблему, поскольку DBUnit не разрешает «символам в своих файлах набора данных xml (это XML, который вы знаете ...), и читателю CSV потребуется файл, который будет называться `user`.csv, который, похоже, не работает под моей ОС.

Можно ли добавить эту таблицу без использования XML или CSV-считывателей DBUnit, или я должен устранить эту проблему под другим углом? Один из вариантов заключается в том, чтобы использовать другое сопоставление во время тестов интеграции, чтобы я мог назвать таблицу ее предполагаемому имени (пользователю). Но я не знаю, это выполнимо или нет.

Я боролся с этим в течение 2 дней, поэтому мне бы хотелось получить внешнюю обратную связь.

Итак, для уточнения. У меня есть объект, такие как:

@Entity (name = "`user`") 
@Inheritance(strategy = InheritanceType.SINGLE_TABLE) 
@Auditable 
public class User implements UserDetails, Serializable { 
    properties etc.... 

Во время тестирования интеграции зимует заботится о создании этой Иной таблицы по конфигурации файла persistence.xml. Когда dbunit затем пытается заполнить данные, я получаю ошибки из-за отсутствия таблицы независимо от того, как я пытаюсь избежать имени таблицы пользователя.

ответ

2

Я подозреваю, что вам нужен escape pattern configuration.

Что-то напоминающее

dbunitConn.getConfig().setProperty(DatabaseConfig.PROPERTY_ESCAPE_PATTERN, "\"?\""); 

где dbUnitConn является соединение DBUnit, следует сделать трюк.

+0

Я читал об экранировании побега, но я не уверен, как использовать его в этом контексте. Если я установил шаблон перехода? каков должен быть элемент в testdata xml? – Billybong

+0

Я думаю, что вам следует просто использовать зарезервированного слова пользователя, и он распознает его как необходимый для спасения и применит его. Если вы используете тот, который я ввел в ответ, он должен указать имя таблицы, которое работает для многих баз данных. –

Смежные вопросы