2013-04-08 23 views
11

değil. 2.1.x grails'e yükseltme işleminde yaşıyorum ve eski stil testlerimin bazılarını yeniden yapmak gerekiyor.çalışan kılavuzlar Intellij Idea'de 2.1.3 testleri: Spock testinde garip hata: Domain sınıfı eklenemiyor [class x.y.Z]. Bu bir Alan

Sadece spock Spec'a yeni bir test ekledim ve bu test için ek bir Domain sınıfı ile uğraşmam gerekiyor.

Bundan önce, ben vardı:

@Mock([Event, EventType]) 

Şimdi var:

@Mock([Event, EventType, Notification]) 

Notification.groovy grails-app altında (Olay ve EventType daha aynı kesin paketi ve fiziksel dizinde/etki alanı) bu yüzden kesinlikle bir sınıf alanı sınıfıdır. Tavşan deliği geçmesi ve yürütülmesine ayıklama başlatın

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) 

ben DomainClassArtefactHandler (hat 87) bu bölümü almak:

I aşağıdaki yığın izleme almak teste çalıştırmayı

:

  // make sure the identify and version field exist 
      testClass.getDeclaredField(GrailsDomainClassProperty.IDENTITY); 
      testClass.getDeclaredField(GrailsDomainClassProperty.VERSION); 

Yani bir şeylerin yanlış gittiğini , Gorm alanlar, reklam değildir ben id alanı yok sanırım çünkü bu, bir istisna ile patlarsa Bundan önce dediği yürütülür.

Yapmam gerekeni öneri olan var mı? Alan sınıfımı @Entity olarak işaretlemem gerekiyor mu (bu aslında test adımı geçiyor)?

Ünite testimin geçmesi için zorunlu olmaması gereken oldukça eminim.

Herhangi bir öneri?

GÜNCELLEME: Aslında sadece benim IDE içinde birim testleri çalıştırdığınızda bu sorun yalnızca ortaya çıkar bulmuşlardır:

http://jira.grails.org/browse/GRAILS-9989: intellij Fikir 12.1

Sorunlar oluşturulan burada Test uygulaması ile,

http://youtrack.jetbrains.com/issue/IDEA-105087

ben hem alanı sınıflarında statik haritalama blokları kaldırmak

test pa D eğ!

+1

Bu, tümleştirme sınama klasöründe veya birim sınama klasöründe mi? Ayrıca, spesifikasyonları genişleten ve @TestFor kullanarak herhangi bir spock entegrasyonu testiniz varsa, entegrasyon testleri için entegrasyonu kullanmanız gereken gerçekten garip hatalar elde edersiniz. –

+0

Merhaba Jeff, bu bir birim testi. Entegrasyon klasöründe henüz bir Spec yok, sadece junit stil testleri. Yine de ilginiz için teşekkürler, bunu aklımda tutacağım. – loteq

+1

Bu etki alanı nesnesi için statik bir eşleme bloğu var mı? –

cevap

19

Sorun, IDEA'nın bir testten diğerine doğru bir şekilde temizlenmemesinden kaynaklanıyor gibi görünüyor. Projeyi yeniden oluşturduğunuzda testler geçer.

+0

Projeyi yeniden inşa ederek ne kastettiğinizi açıklayabilir misiniz? Ben de bu konu ile sıkışmış, kesinlikle IntelliJ ilgili, ancak tam olarak ne sıfırlamak için yapılması gereken emin değilim. – dbrin

+1

En son IDEA (14.x) sürümünü kullanıyorsanız, aynı davranışa neden olan ve projeyi yeniden oluşturmaya çalışmayan başka bir hata vardır. Https://youtrack.jetbrains.com/issue/IDEA-138275 adresine bakın ve yorumlarda bir geçici çözüm var: ayarlarda süreç derlemesinde devre dışı bırak: -Dgroovyc.in.process = false. – loteq

+0

Tamam, bu seçeneği deniyorum, başka bir şey yapmam gerekiyor mu, neden hala sorun görüyorum? – dbrin