Ich bin dabei, auf die Grils 2.1.x zu aktualisieren, und muss einige meiner alten Tests wiederholen.running grails 2.1.3 Tests in Intellij Idee: Seltsamer Fehler im Spock-Test: Domain-Klasse [Klasse x.y.Z] kann nicht hinzugefügt werden. Es ist keine Domain
Ich habe gerade einen neuen Test zu meinem spock Spec hinzugefügt, und für diesen Test muss ich eine zusätzliche Domain-Klasse spotten.
Vor diesem hatte ich:
@Mock([Event, EventType])
Jetzt habe ich:
@Mock([Event, EventType, Notification])
Notification.groovy ist in exakt der gleichen Paket und physische Verzeichnis als Veranstaltungs- und Eventtype (unter Grails-app/Domain), also ist es definitiv eine Grails-Domain-Klasse.
Wenn ich versuche, meinen Test bekomme ich folgende Stack-Trace auszuführen:
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)
Wenn ich durch den Kaninchenbau gehen und starten Sie die Ausführung Debuggen, ich auf diesen Teil von DomainClassArtefactHandler erhalten (Linie 87):
// make sure the identify and version field exist
testClass.getDeclaredField(GrailsDomainClassProperty.IDENTITY);
testClass.getDeclaredField(GrailsDomainClassProperty.VERSION);
dies bläst mit einer Ausnahme auf, weil ich das ID-Feld erraten
So geht etwas schief nicht vorhanden ist, sind die GORM Felder nicht ad ded bevor dies ausgeführt wird.
Hat jemand einen Vorschlag, was ich tun soll? Muss ich meine Domain-Klasse als @Entity markieren (das macht tatsächlich meinen Test bestanden)?
Ich bin mir ziemlich sicher, dass das nicht obligatorisch sein sollte, damit mein Komponententest bestanden wird.
Irgendwelche Ratschläge?
UPDATE: Eigentlich habe ich gerade entdeckt, dass dieses Problem entsteht erst, wenn ich die Unit-Tests in meinem IDE ausführen: IntelliJ IDEA 12.1
Probleme erstellt, mit Test-App hier:
http://jira.grails.org/browse/GRAILS-9989
http://youtrack.jetbrains.com/issue/IDEA-105087
Wenn ich die statische Zuordnung Blöcke in beiden Klassen Domäne zu entfernen, der Test pa sss!
Ist dies im Integrationstestordner oder im Komponententestordner? Auch wenn Sie irgendwelche Spock-Integrationstests haben, die die Spezifikation erweitern und @TestFor verwenden, werden Sie wirklich seltsame Fehler bekommen, die Sie noch brauchen, um die Integrationspec für Integrationstests zu verwenden. –
Hallo Jeff, es ist ein Komponententest. Es gibt noch keine Specs im Integrationsordner, nur Junit Style Tests. Danke, dass Sie Interesse geweckt haben, aber ich werde es mir merken. – loteq
Gibt es für dieses Domänenobjekt einen statischen Mapping-Block? –