Thucydides и JBehave: проблема сетапа данных в базу

Есть тесты написанные в связке JBehave + Thucydides.
Стоит задача, что бы тесты выполнялись на любой базе.
Т.е. нужно заполнять базу данными перед тестами и потом чистить только эти данные.

Есть мысль использовать аннотации @BeforeStories для наполния БД основными данными, а потом в @Given адейтами и и инсертами добивать все остальное.

С базой работаю через hibernate.

Удалять каскадно не выходить. т.к rollback не работает корректо с jbehave.

Прошу поделиться своими мыслями, мне так думается, что подобные проблемы уже решались.
Заранее спасибо.

  1. Например, делать backup/rollback всей базы до/после теста. Если не слишком большая
  2. Можно использовать в принципе урезанную тестовую базу (боевую, из которой вычищены ненужные данные). В том числе in-memory db, то есть хранимую в ОЗУ только на время теста
  1. Не вариант для меня, т.к. во -первых процедура восстановления занимает много времени, а во-вторых - мне нужно запускать тесты например на пре-проде.

  2. Урезанную впринципе и думаю. Про in-memory db тоже думал. только не знаю технической стороны вопроса…

На данный момент принято решение забивать основные данные в базу в методе аннотированном @BeforeStories и чистить эти данные в @AfterStories.
При необходимости апдейтов и инсертов данных для тестирования - выполнять их прямо в @Given методах.

Напомню что преследуется цель выполнять тестовые сценарии как на полной базе так и на совершенно пустой.

1 лайк