У меня не пройден интеграционный тест из-за загрязнения теста (тесты проходят или не проходят в зависимости от того, в каком порядке они выполняются).
Что меня немного смущает, так это то, что кажется, что модульный тест, в котором я смоделировал некоторые данные с помощью mockDomain(Media.class,[new Movie(...)])
, все еще присутствует и доступен в других тестах, даже в интеграционных тестах.
Это ожидаемое поведение? почему тестовая структура не очищает после себя для каждого теста?
EDIT
Действительно странно, в документации говорится, что:
Интеграционные тесты отличаются от модульных тестов тем, что у вас есть полный доступ к среде Grails в рамках теста. Grails будет использовать базу данных HSQLDB в памяти для интеграционных тестов и очищать все данные из базы данных между каждым тестом.
Однако в моем интеграционном тесте у меня есть следующий код
protected void setUp() {
super.setUp()
assertEquals("TEST POLLUTION!",0,Movie.count())
...
}
Что дает мне вывод:
TEST POLLUTION! expected:<0> but was:<1>
Это означает, что есть данные, которых не должно быть!
Глядя на данные, присутствующие в Movie.list (), я обнаруживаю, что данные соответствуют данным, установленным в предыдущем тесте (модульном тесте)
protected void setUp() {
super.setUp()
//mock the superclass and subclasses as instances
mockDomain(Media.class,[
new Movie(id:1,name:'testMovie')
])
...
}
Есть идеи, почему я испытываю эти проблемы?