gpt4 book ai didi

unit-testing - Grails Spock 单元测试在本地通过但在 CI 环境中失败

转载 作者:行者123 更新时间:2023-12-02 14:53:43 25 4
gpt4 key购买 nike

我有一组基于 Spock 的单元测试,它们在本地通过,但在我的 CI (Jenkins) 服务器上记录了以下两个异常而失败。有些测试在这两个异常(exception)情况下都失败了,但有些测试只在第一个异常(exception)情况下失败。

所有测试都失败,但出现以下异常:

Account field name is nullable using null(com.vsnap.site.entities.account.organization.OrganizationSpec)
|
java.lang.IllegalStateException: Already value [org.grails.datastore.mapping.transactions.SessionHolder@7f5083c7] for key [org.grails.datastore.mapping.simple.SimpleMapDatastore@62987889] bound to thread [main]
at org.grails.datastore.mapping.core.DatastoreUtils.bindSession(DatastoreUtils.java:337)
at grails.test.mixin.domain.DomainClassUnitTestMixin.connectDatastore(DomainClassUnitTestMixin.groovy:108)
at org.spockframework.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:138)
at org.spockframework.runtime.extension.builtin.JUnitFixtureMethodsExtension$FixtureType$FixtureMethodInterceptor.intercept(JUnitFixtureMethodsExtension.java:145)
at org.spockframework.runtime.extension.MethodInvocation.proceed(MethodInvocation.java:84)
at org.spockframework.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:138)
at org.spockframework.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:138)
at org.spockframework.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:138)

除了第一个之外,有些失败了:
java.lang.NullPointerException: Cannot invoke method isActive() on null object
at grails.test.mixin.support.GrailsUnitTestMixin.shutdownApplicationContext(GrailsUnitTestMixin.groovy:232)
at org.spockframework.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:138)
at org.spockframework.runtime.extension.builtin.JUnitFixtureMethodsExtension$FixtureType$FixtureMethodInterceptor.intercept(JUnitFixtureMethodsExtension.java:145)
at org.spockframework.runtime.extension.MethodInvocation.proceed(MethodInvocation.java:84)
at org.spockframework.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:138)

在这些单元测试中,我所做的只是测试域对象的约束:
@TestFor(User)
class UserSpec extends Specification {
def "test user field constraints"() {
when:
def user = new User(name: name)

then:
user.errors['name'] == error

where:
error | name
'blank' | ''
}
}

最佳答案

当我在上面留下评论时,我发现堆栈跟踪实际上是在试图告诉我一些有用的东西:)
问题是在我的情况下,IntelliJ 正在拉入同一个库,并且两个实例都在向监听器注册自己......
在我的情况下,Maven 正在拉入 grails-testing-plugin 并且 IntelliJ 有 grails 文件夹,其中包含依赖树(模块设置)上的相同 jar。删除其中一个可以解决问题....现在转到下一个:)

关于unit-testing - Grails Spock 单元测试在本地通过但在 CI 环境中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15143118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com