我正在使用旧版Oracle 10g数据库处理Grails应用程序(v 2.4.3),并在尝试对服务运行集成测试时遇到以下错误。我在谷歌和这里搜索过,在服务集成测试期间找不到其他人收到此错误。我的单元测试运行没有问题的域类,我只有集成测试这个错误。
该应用程序的结构是在服务层中调用所有hibernate条件,并且不能将它们放在域类中。
Running 1 integration test...
| Running 1 integration test... 1 of 1
| Failure: test getAllDeliveryTypes(catalog.CatalogServiceSpec)
| java.lang.NoClassDefFoundError: org/springframework/mock/web/MockAsyncContext
at java.lang.Class.privateGetDeclaredMethods(Class.java:2693)
at java.lang.Class.getDeclaredMethods(Class.java:1967)
at org.codehaus.groovy.util.LazyReference.getLocked(LazyReference.java:46)
at org.codehaus.groovy.util.LazyReference.get(LazyReference.java:33)
at grails.test.spock.IntegrationSpec.initRequestEnv(IntegrationSpec.groovy:96)
at grails.test.spock.IntegrationSpec.setup(IntegrationSpec.groovy:62)
Caused by: java.lang.ClassNotFoundException: org.springframework.mock.web.MockAsyncContext
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
... 6 more
| Completed 1 integration test, 1 failed in 0m 0s
集成测试类
package catalog
import grails.test.spock.IntegrationSpec
import spock.lang.*
/**
*
*/
class CatalogServiceSpec extends IntegrationSpec {
static DeliveryType deliveryType
static CatalogService catalogService = new CatalogService()
def setup() {
deliveryType = new DeliveryType()
deliveryType.id = 1
deliveryType.createdById = 101
deliveryType.createdOn = new Date()
deliveryType.modifiedById = 101
deliveryType.modifiedOn = new Date()
deliveryType.code = '01'
deliveryType.name = 'In-Person Classroom'
}
@Unroll("test getAllDeliveryTypes")
def "test getAllDeliveryTypes"() {
when:
def results = catalogService.getAllDeliveryTypes()
then:
results.size() == 1
}
}
服务类
package catalog
import grails.transaction.Transactional
@Transactional
class CatalogService {
List<DeliveryType> getAllDeliveryTypes() {
List<DeliveryType> deliveryTypes = DeliveryType.list(sort: "id", order: "asc")
return deliveryTypes
}
}
域
package catalog
class DeliveryType {
static constraints = {
id range: 1..2500000000
createdById range: 1..2500000000
modifiedById range: 1..2500000000
code maxSize: 6, unique: true
name maxSize: 30
}
static mapping = {
version false
table name: 'delivery_type', schema: 'catalog'
id generator:'assigned'
}
Long id
Long createdById
Date createdOn
Long modifiedById
Date modifiedOn
String code
String name
}
配置文件
dependencies {
test "org.grails:grails-datastore-test-support:1.0-grails-2.4"
runtime 'org.springframework:spring-test:3.1.0.RELEASE'
}
plugins {
// plugins for the build system only
build ":tomcat:7.0.55"
// plugins for the compile step
compile ":scaffolding:2.1.2"
compile ':cache:1.1.7'
compile ":asset-pipeline:1.9.6"
// plugins needed at runtime but not for compilation
runtime ":hibernate4:4.3.5.5" // or ":hibernate:3.6.10.17"
runtime ":database-migration:1.4.0"
}
非常感谢。
布雷特
答案 0 :(得分:0)
删除@Unroll,因为您的规范中没有位置:
在设置阶段,您不会提交创建的deliveryType。该服务来自DeliveryType.list(),所以如果它没有提交,它就不会被拉入响应。
最后,您的dataSource是否正确设置了测试环境?