Как очистить базу данных (домены) между сценариями easyb в Grails Integration Testing? - PullRequest
2 голосов
/ 19 августа 2010

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

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

Ответы [ 2 ]

0 голосов
/ 15 ноября 2011

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

Завершение каждого сценария тестирования easyb в блок с транзакцией и откат вручную в конце

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
}
}

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

0 голосов
/ 19 августа 2010

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

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

...