2

この質問はすでに存在していますが、既存の質問にはいくつかの重要なリンクがありません。

テスト用の Bean の構成を、末尾が .*TestsSpringBeans.groovy

Groovy ドキュメントの「Loading Bean Definitions from the File System」 (検索) を 読んだ後、これを実行しようとしました。

関連するコード セグメントは次のとおりです。

import grails.util.*

beans = {
...
  switch(Environment.current) {
    case Environment.TEST:
      loadBeans("classpath:*TestsSpringBeans.groovy")
      break
    }
}

resources.groovy - ファイル システムから *TestSpringBeans ファイルをロードします。


somePlace(jobdb.Company) {
    name = "SomeCompany"
    addr1 = "addr1"
    addr2 = "addr2"
    city = "city"
    email = "somedude@h0tmail.com"
    fax = "555-555-5555"
    phone = "444-444-4444"
    state = "PA"
    zip = "19608"
    version: 0
    created = new Date()
    updated = new Date()
    website = "http://www.yahoo.com"
    deleted = false
  }

CompanyServiceTestsSpringBeans.groovy - 統合テスト用の Bean の定義

// Retrieve configured bean from 
Company someplace = ApplicationHolder.getApplication().getMainContext().getBean('somePlace')

CompanyServiceTests.groovysomePlace - Integration Test 内でBean を取得します...

テスト内で呼び出すとgetBean('somePlace')、エラーが表示されます。 No bean named 'somePlace' is defined

このCompanyServiceTests.groovyファイルは統合テストと共に保存されますが、このファイルをプロジェクト ディレクトリ構造の別の場所に保存する必要がありますか?

4

1 に答える 1

1

クラスパスを参照ポイントとして使用することはそれほど重要ではない方法でテストを実行するため、プロジェクトディレクトリ固有のパスを介して参照することにより、beans{...}ファイルをロードしようとする場合があります。(例:$ baseDir / test / resources / MyCustomBeans.groovy)または、JUnit4アノテーションを使用している場合は、@BeforeClassを介してテストでBeanを明示的にロードします。

def bb = new BeanBuilder()
def resource = new FileSystemResource('src/test/resources/testContext.groovy')
bb.loadBeans(resource)
appCtx = bb.createApplicationContext()
...
于 2011-11-10T13:23:18.247 に答える