Tôi đang trong quá trình nâng cấp lên grails 2.1.x và cần phải làm lại một số thử nghiệm kiểu cũ của tôi.chạy grails 2.1.3 thử nghiệm trong Intellij Idea: Lỗi kỳ lạ trong kiểm tra Spock: Không thể thêm lớp Domain [class x.y.Z]. Nó không phải là một tên miền
Tôi vừa thêm một thử nghiệm mới vào Spec spock của mình và cho thử nghiệm này, tôi cần giả lập một lớp Domain bổ sung.
Trước đó, tôi đã có:
@Mock([Event, EventType])
Bây giờ tôi có:
@Mock([Event, EventType, Notification])
Notification.groovy là trong gói chính xác cùng và thư mục vật lý hơn so với tổ chức sự kiện và eventType (dưới grails-app/miền) vì vậy nó chắc chắn là một lớp miền grails.
Khi tôi cố gắng chạy thử nghiệm của tôi tôi nhận được stack trace sau:
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)
Khi tôi đi qua các hang thỏ và bắt đầu gỡ lỗi thực hiện, tôi nhận được đến phần này của DomainClassArtefactHandler (dòng 87):
// make sure the identify and version field exist
testClass.getDeclaredField(GrailsDomainClassProperty.IDENTITY);
testClass.getDeclaredField(GrailsDomainClassProperty.VERSION);
này thổi lên với một ngoại lệ, bởi vì tôi đoán trường id là không có mặt
vì vậy, một cái gì đó đang xảy ra sai, các lĩnh vực GORM không quảng cáo ded trước khi điều này được thực hiện.
Có ai có đề xuất về những gì tôi cần làm không? Tôi có cần đánh dấu lớp miền của mình là @Entity (điều này thực sự làm cho bài kiểm tra của tôi vượt qua) không?
Tôi khá chắc chắn đó không phải là bắt buộc để kiểm tra đơn vị của tôi vượt qua.
Bạn có lời khuyên nào không?
UPDATE: Thực ra, tôi vừa phát hiện ra rằng vấn đề này chỉ xảy ra khi tôi chạy các bài kiểm tra đơn vị bên trong IDE của tôi: Idea IntelliJ 12,1
vấn đề tạo ra, với ứng dụng thử nghiệm ở đây:
http://jira.grails.org/browse/GRAILS-9989
http://youtrack.jetbrains.com/issue/IDEA-105087
Khi tôi xóa khối lập bản đồ tĩnh trong cả hai lớp miền, kiểm tra pa sses!
Đây có phải là thư mục kiểm tra tích hợp hoặc thư mục kiểm tra đơn vị không? Ngoài ra nếu bạn có bất kỳ thử nghiệm tích hợp spock mở rộng đặc điểm kỹ thuật và sử dụng @TestFor bạn sẽ nhận được lỗi thực sự lẻ bạn vẫn cần phải sử dụng integrationspec cho các bài kiểm tra tích hợp. –
Xin chào Jeff, đây là một bài kiểm tra đơn vị. Không có thông số nào trong thư mục tích hợp, chỉ có các kiểm tra kiểu junit. Cảm ơn bạn đã quan tâm, tôi sẽ ghi nhớ điều này. – loteq
Đối với đối tượng miền đó có một khối lập bản đồ tĩnh không? –