1

ローカルでは合格しているが、CI (Jenkins) サーバーに次の 2 つの例外が記録されて失敗している一連の Spock ベースの単体テストがあります。両方の例外で失敗するテストもあれば、最初の例外だけで失敗するテストもあります。

すべてのテストは、次の例外で失敗します。

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'    | ''
    }
}
4

1 に答える 1

0

上記のコメントを残すとすぐに、スタック トレースが実際に有用なことを伝えようとしていることがわかりました:) 問題は、私の場合、同じライブラリが IntelliJ によって取り込まれ、両方のインスタンスがリスナーに登録されていることです。 ... 私の場合、Maven は grails-testing-plugin をプルしており、IntelliJ には依存関係ツリー (モジュール設定) に同じ jar を含む grails フォルダーがありました。これらのいずれかを削除すると、問題が解決されました....次の問題に進みます:)

于 2015-03-25T04:37:06.133 に答える