4

所以我有一个小型集成测试,总共包含 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())
    }
}
4

2 回答 2

1

从 1.3.7 迁移到 2.0 时,我遇到了类似的问题。启动时集成测试没问题

grails test-app --integration

但是在启动时失败了

grails test-app

我通过将单元测试转换为 grails 2.0 测试(使用注释)来修复所有问题。

于 2012-01-24T16:20:40.540 回答
0

我的解决方案是将所有单元测试升级到 grails 2.0 进行测试的方法。完成后,所有测试都通过了。因此,单元测试似乎以某种方式污染了集成测试。但仅限于某些硬件配置。

于 2012-01-24T18:58:14.930 回答