Пожалуй, на текущий момент наиболее популярным является DDT подход в web автоматизации. При хранении тестовых данных в БД зачастую мы пишем различного рода обертки для последующего изъятия необходимых нам записей. Есть сторонники написания абстракций над jdbc. Другие же, подходят к вопросу более обстоятельно, прибегая к уже готовым системам по типу Hibernate или Spring.
Данный пример использует Hibernate для взаимодействия с любым кол-вом сущностей в пределах нескольких БД без привязки к типу. Т.е. это может быть, к примеру, MySQL и Oracle. Текущая реализация предполагает лишь опрерации чтения, но в целом, вы вольны добавить доп. логику записи в generic DAO. Задание сущностей организовано посредством Java 8 ипрувментов в области аннотаций. Пример такого теста:
Как всегда, более подробно можно почитать в моем блоге + сорсы на местном GitHub. С любыми предложениями по импрувменту пишите в личку, либо создаем PR.
Добавил concurrent updates support. Детальнее в блоге. Обновленные исходники там же, на GitHub. Для примера были созданы 2 теста, которые в параллели изменяют одну и ту же сущность. При этом, на выходе у нас возможны 2 кейса: с перезаписью мейла и без. Но измененный пароль будет всегда merged независимо от порядка выполнения потоков.
Мне в последнее время кажется noSql данные удобнее ввиду отсутствия ограничения таблиц, и легкости тестовых данных. Если элемент таблицы может быть список или мапа. Не пробовали?
Как DAO сеттеры и геттеры писать для null значений таблиц, или если нужны defaults (чтобы не засорять sql табличку, не нужными для теста данными)?
В Java 8, появилась Optional монада и сахар для Null, к чему склоняетесь что-то есть у Hibernate?
На прошлом проекте было требование - хранить результаты тестов в MongoDB. Так что я использовал Morphia - аналог Hibernate для MongoDB. Синтаксис очень похож.
Вам необязательно создавать все филды, которые есть в таблице. Hibernate вытянет только то, что объявлено в Entity классе. Или речь не об этом?