2016-04-06 33 views
1

我正在使用Grails 3.1.4,我创建了一些域对象并编写了单元测试。 测试在我的电脑上执行得很好。Grails未能实现Domain类

Tests on my computer

但另一方面developpers计算机和持续集成平台,测试失败,出现异常:

java.lang.IllegalStateException: Either class [ ] is not a domain class or GORM has not been initialized correctly or has already been shutdown. If you are unit testing your entities using the mocking APIs 
at org.grails.datastore.gorm.GormEnhancer.stateException(GormEnhancer.groovy:159) 
at org.grails.datastore.gorm.GormEnhancer.findValidationApi(GormEnhancer.groovy:173) 
at org.grails.datastore.gorm.GormValidateable$Trait$Helper.currentGormValidationApi(GormValidateable.groovy:120) 
at org.grails.datastore.gorm.GormValidateable$Trait$Helper.validate(GormValidateable.groovy:87) 
at com.cscinfo.platform.constraint.CascadeValidationConstraint.validateValue(CascadeValidationConstraint.groovy:43) 
at com.cscinfo.platform.constraint.CascadeValidationConstraint.processValidateWithVetoing_closure1(CascadeValidationConstraint.groovy:29) 
at groovy.lang.Closure.call(Closure.java:426) 
at com.cscinfo.platform.constraint.CascadeValidationConstraint.processValidateWithVetoing(CascadeValidationConstraint.groovy:28) 
at grails.validation.AbstractVetoingConstraint.validateWithVetoing(AbstractVetoingConstraint.java:33) 
at grails.validation.ConstrainedProperty.validate(ConstrainedProperty.java:967) 
at org.grails.validation.GrailsDomainClassValidator.validatePropertyWithConstraint(GrailsDomainClassValidator.java:211) 
at org.grails.validation.GrailsDomainClassValidator.validate(GrailsDomainClassValidator.java:81) 
at org.grails.datastore.gorm.GormValidationApi.doValidate(GormValidationApi.groovy:89) 
at org.grails.datastore.gorm.GormValidationApi.validate(GormValidationApi.groovy:161) 
at org.grails.datastore.gorm.GormValidateable$Trait$Helper.validate(GormValidateable.groovy:87) 
at api.mails.MailSpec.Test la validation d'un mail incorrect 2(MailSpec.groovy:66) 

似乎格姆不能让我的域对象。

我无法重现我的电脑上的错误。 任何帮助或文件将不胜感激。 谢谢!

+0

您是否在dev和prod上使用相同的数据源? –

回答

9

问题是我的单元测试中有些项目没有被嘲弄。 我在@Mock注释中放置了一个对象数组,现在它可以在我的持续集成平台上工作。

@TestFor(SMTPMailerService) 
@Mock([Mail, DestinataireMail, PieceJointeMail]) 
class SMTPMailerServiceSpec extends Specification { 

希望它能帮助别人!

+0

真的,它帮助我很多,谢谢! –

+0

非常感谢你!花一天时间跟踪这个问题,你的答案解决了问题! – franzcatch