Как очистить базу данных (домены) между сценариями easyb в Grails Integration Testing?

Я запускаю интеграционный тест для приложения Grails. Я использую плагин easyb. Проблема в том, что база данных не очищается между сценариями. My Когда я запускаю стандартные интеграционные тесты Grails, контекст сохраняемости очищается между каждым тестом. Истории easyb находятся в папке интеграции, но правила тестирования интеграции Grails, похоже, здесь не применяются... Так как же сделать так, чтобы easyb убирал за собой?

P.S. Я определяю несколько сценариев в одном и том же файле groovy, но я не думаю, что это обязательно уместно.


person vicatcu    schedule 18.08.2010    source источник


Ответы (2)


Просто на случай, если кто-то вроде меня все еще занимается этой проблемой и ищет способ отката после каждого тестового сценария, ниже приведено работающее решение (спасибо блогу Берта Беквита).

Оберните каждый тестовый сценарий easyb в блок транзакций with и вручную выполните откат в конце.

scenario "add person should be successful", {
Person.withTransaction { status -> 
    given "no people in database", {
    }
    when "I add a person", {
        Person.build()
    }
    then "the number of people in database is one", {
        Person.list().size().shouldEqual 1
    }
    status.setRollbackOnly()
}
}

scenario "database rollback should be successful", {
given "the previous test created a person", {
}
when "queried for people", {
    people = Person.list().size()
}
then "the number of people should be zero", {
    people.shouldEqual 0
}
}

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

person scout    schedule 14.11.2011

Одна из возможностей заключается в использовании транзакций. Я использую эту технику в java. Вы помечаете свой тест аннотацией транзакции. И после теста вы откатываете изменения базы данных.

Следующая возможность — запустить запросы на очистку SQL в разделе после сценария.

person amra    schedule 19.08.2010