Sono in procinto di aggiornare a Grails 2.1.x, e ho bisogno di rifare alcuni dei miei test vecchio stile.esecuzione grails 2.1.3 test in Intellij Idea: errore bizzarro in Spock test: impossibile aggiungere la classe Dominio [classe x.y.Z]. Non è un dominio
Ho appena aggiunto un nuovo test al mio Spock Spec, e per questo test ho bisogno di prendere in giro una classe Dominio aggiuntiva.
Prima di questo, ho avuto:
@Mock([Event, EventType])
ora ho:
@Mock([Event, EventType, Notification])
Notification.groovy è nello stesso pacchetto esatto e la directory fisica di eventi e EventType (sotto graal-app/dominio) quindi è sicuramente una classe di dominio Grails.
Quando provo a fare funzionare la mia prova ottengo il seguente stack trace:
org.codehaus.groovy.grails.exceptions.GrailsConfigurationException: Cannot add Domain class [class x.y.Notification]. It is not a Domain!
at org.codehaus.groovy.grails.commons.DefaultGrailsApplication.addArtefact(DefaultGrailsApplication.java:911)
at org.codehaus.groovy.grails.commons.DefaultGrailsApplication.addArtefact(DefaultGrailsApplication.java:615)
at grails.test.mixin.domain.DomainClassUnitTestMixin.mockDomain(DomainClassUnitTestMixin.groovy:131)
at grails.test.mixin.domain.DomainClassUnitTestMixin.mockDomain(DomainClassUnitTestMixin.groovy:128)
Quando vado attraverso la tana del coniglio e avviare il debug l'esecuzione, ottengo a questa parte del DomainClassArtefactHandler (linea 87):
// make sure the identify and version field exist
testClass.getDeclaredField(GrailsDomainClassProperty.IDENTITY);
testClass.getDeclaredField(GrailsDomainClassProperty.VERSION);
questa esplode con un'eccezione, perché credo che il campo ID non è presente
Quindi, qualcosa sta andando male, i campi di Gorm non sono pubblicità ded prima che questo venga eseguito.
Qualcuno ha un suggerimento su cosa devo fare? Devo contrassegnare la mia classe di dominio come una @Entity (questo effettivamente rende il mio test superato)?
Sono sicuro che non è necessario che il test dell'unità passi per il test.
Qualche consiglio?
UPDATE: In realtà, ho appena scoperto che la questione si pone solo quando si esegue il test di unità dentro la mia IDE: IntelliJ IDEA 12.1
problemi creati, con la prova di applicazione qui:
http://jira.grails.org/browse/GRAILS-9989
http://youtrack.jetbrains.com/issue/IDEA-105087
Quando rimuovo i blocchi mapping statico in entrambe le classi di dominio, la pa di prova SSES!
Si trova nella cartella di test di integrazione o nella cartella di test dell'unità? Inoltre, se si dispone di test di integrazione di spock che estendono le specifiche e si utilizza @TestFor, si ottengono errori davvero strani, è comunque necessario utilizzare integrationspec per i test di integrazione. –
Ciao Jeff, è un test unitario. Non ci sono ancora specifiche nella cartella di integrazione, solo test in stile junit. Grazie per l'interesse, lo terrò a mente. – loteq
Per quel dominio oggetto esiste un blocco di mappatura statico? –