2

2.4.0 から 2.4.2 にアップグレードした後、統合テストを実行するとエラーが発生します。テストに合格したことを示していますが、IllegalStateException が発生しています。

    Failure:  |
massemailsystem.UserInformationIntegrationSpec
 |
java.lang.IllegalStateException: Could not find ApplicationContext, configure Grails correctly first
    at grails.util.Holders.getApplicationContext(Holders.java:97)
    at grails.test.spock.IntegrationSpec.$spock_initializeSharedFields(IntegrationSpec.groovy:41)

テストを分析しようとしましたが、異常は見られません。これが完全なテストです。LDAP データ ソースからの情報の取得をテストしています

abstract class DirectoryIntegrationSpec extends IntegrationSpec {

    DirContextOperations getContext(Map attrs) {
        DirContextAdapter d = new DirContextAdapter()
        attrs.each { k, v ->
            if (v != null) {
                d.addAttributeValue(k, v)
            }
        }
        d
    }
}


class UserInformationIntegrationSpec extends DirectoryIntegrationSpec {

    def dataSource

    def setup() {
        new SPRIDEN(pidm: 100, yNumber: 'Y00100', lastName: 'Smith').save(flush: true, failOnError: true)
        new SPBPERS(pidm: 100, prefFirstName: 'Joe', activityDate: new Date(), armedServMedVetInd: 'N').save(flush: true, failOnError: true)
        new SPRTELE(pidm: 100, seqNo: 1, teleCode: 'CE', activityDate: new Date(), primaryInd: 'Y', phoneArea: '330', phoneNumber: '1234567').save(flush: true, failOnError: true)

        new SPRIDEN(pidm: 102, yNumber: 'Y00102', lastName: 'Smith').save(flush: true, failOnError: true)
        new SPRTELE(pidm: 102, seqNo: 1, teleCode: 'CE', activityDate: new Date(), primaryInd: 'Y', phoneArea: '330', phoneNumber: '1234567').save(flush: true, failOnError: true)

        new SPRIDEN(pidm: 103, yNumber: 'Y00103', lastName: 'Smith').save(flush: true, failOnError: true)
    }

    def cleanup() {
    }

    @Unroll
    void "test constructor from LDAP for fake #employeeid"() {
        when:
        def context = getContext([employeeid: employeeid, givenname: firstName, sn: lastName, mail: email])
        UserInformation u = new UserInformation(context, username, dataSource)

        then:
        u.id == id
        u.firstName == prefFirstName
        u.lastName == lastName
        u.email == email
        u.phone == phone
        u.department == department
        u.username == username

        where:
        employeeid | username | id   | firstName | prefFirstName | lastName | email            | phone            | department
        'Y00100'   | 'jsmith' | 100  | 'Joseph'  | 'Joe'         | 'Smith'  | 'jsmith@ysu.edu' | '(330) 123-4567' | null
        "Y00101"   | null     | null | null      | null          | null     | null             | null             | null
        "Y00102"   | 'jsmith' | 102  | 'Joseph'  | 'Joseph'      | 'Smith'  | 'jsmith@ysu.edu' | '(330) 123-4567' | null
        "Y00103"   | 'jsmith' | 103  | 'Joseph'  | 'Joseph'      | 'Smith'  | null             | null             | null
    }
}

前もって感謝します!

編集:テストは、すべての統合テストを実行した場合にのみ、単独で実行しても失敗しません。

4

1 に答える 1

4

ここで私の側の愚かな問題。

テストの直前のテストでは、@TestFor注釈を使用して拡張Specificationする必要がありましたが、拡張する必要がありIntegrationSpec、注釈がまったくありませんでした。この仕様をユニットから統合に変更しましたが、これらの変更に失敗しました。

面白いことに、テスト自体は問題なく動作し、問題が発生した後に実行されたテストのみでした。

于 2014-07-26T15:57:14.153 に答える