Domanda

Quindi ho un piccolo test di integrazione che ospita 5 test in totale. L'esecuzione di quel test si traduce esclusivamente in tutti i test superati. Tuttavia, l'esecuzione della mia intera suite di test si traduce in 4 guasti ai test del 5.

Sono appena stato aggiornato a Grails-2.0 da 1.3.7 e sono passato da HSQLDB a H2.

Qualcuno ha dei suggerimenti in quale direzione dovrei cercare per risolvere questo problema (inquinamento del test)?

Modello di dominio

domain-model

Test di integrazione:

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())
    }
}
È stato utile?

Soluzione 2

La mia soluzione per aggiornare tutti i test unitari al metodo Grails 2.0 per eseguire i test. Quando è stato fatto, ogni test è passato. Quindi sembra che i test unitari in qualche modo inquinati test di integrazione. Ma solo su determinate configurazioni hardware.

Altri suggerimenti

Ho avuto un problema simile quando mi sono spostato da 1.3.7 a 2,0. I test di integrazione erano OK quando sono stati lanciati con

grails test-app --integration

ma stavano fallendo quando sono stati lanciati con

grails test-app

Ho risolto tutto convertendo i test unitari in test Grails 2.0 (usando annotazioni).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top