所以我有一个小的集成测试,总共包含5个测试。运行该测试只会导致所有通过的测试。然而,运行我的整个测试套件会导致5中的4次测试失败。
我最近刚从1.3.7升级到grails-2.0,并从hsqldb切换到h2。
为了解决这个(测试污染)问题,我应该往哪个方向看呢?
域模型

集成测试:
class SeriesIntegrationTests extends GrailsUnitTestCase {
Series series
Episode episode
protected void setUp() {
super.setUp()
series = new Series(ttdbId: 2348);
episode = new Episode(ttdbId: 2983, season: 0, episodeNumber: 0, series: series);
}
protected void tearDown() {
super.tearDown()
}
void testCreateSeries() {
series.save()
assertFalse("should not have validation errors : $series.errors", series.hasErrors())
assertEquals("should be one series stored in db", 1, Series.count())
}
void testCreateEpisode() {
series.save()
episode.save()
assertFalse("should not have validation errors : $episode.errors", episode.hasErrors())
assertEquals("should be one episode stored in db", 1, Episode.count())
}
void testCreateSeriesAndAddEpisode() {
series.addToEpisodes(episode)
series.save(flush: true)
series.refresh()
assertEquals("series should contain one episode", 1, series.episodes.size())
}
void testDeleteSeriesAndCascadeToEpisode() {
series.addToEpisodes(episode)
series.save(flush: true)
series.delete(flush: true)
assertEquals(0, Episode.count())
assertEquals(0, Series.count())
}
void testDeleteSeriesAndCascadeToBackdropImage() {
series.backdrop = new Image();
series.backdrop.binaryData = new byte[0]
series.save(flush: true)
assertFalse(series.hasErrors())
assertEquals(1, Image.count())
series.delete(flush: true)
assertEquals(0, Image.count())
}
}发布于 2012-01-24 18:58:14
我的解决方案是将所有单元测试升级为Grails2.0进行测试的方法。当这件事完成后,所有的测试都通过了。因此,单元测试似乎以某种方式污染了集成测试。但只适用于特定的硬件配置。
https://stackoverflow.com/questions/8985152
复制相似问题