2

私は Griffon を初めて使用し、Grails の使用経験があります。

リソース ディレクトリからのファイルの読み込みに問題があります。

Griffon バージョン 1.4.0 を使用しています。

XML ファイルの場所を取得するために次のコードを (サービス内で) 実行するgriffon run-appと、正常に動作します。

URL resource = getResourceAsURL('schema.xsd')
assert resource != null : "schema cannot be located"

ただし、実行すると、返される値が null でgriffon test-appあるため、同じコードでアサーション エラーが発生します。URLと同じ動作getResourceAsStream()

これは、上記のサービスの単体テストで発生します。

にファイルを入れました./griffon-app/resources

私は何を間違っていますか?すべてのリソースを本番環境からいくつかのテスト リソース フォルダーにコピーする必要がありますか?ビルド構成を編集する必要がありますか?

前もって感謝します!

以下に提案されているように編集して、griffon-projects イシュー トラッカーにバグ レポートを提出しました。

4

2 に答える 2

1

単体テストを実行するには、test-app を実行する必要があります。この場合、実際のファイルへの参照をモックする必要があります。それ以外の場合は、Integration Testsを実装する必要があります。Pls はGriffon Testingを参照してください。統合テストは、テスト内で Griffon アプリケーションに完全にアクセスできるという点で単体テストとは異なります。

于 2013-09-12T12:03:03.500 に答える
1

araxn1dは正しいです。統合モードでテストを実行すると、テストが実行される前に完全なアプリケーションがブートストラップされるため、正しい答えが得られます。現在、この種のテスト (クラスパスで利用可能なリソースに依存する単体テスト) を実行すると、クラスパスが正しく設定されていないため、問題が発生します。次のコマンドの実行

griffon -Dgriffon.cli.verbose=true test-app --unit --compileTrace=true

すべてのクラスパスを出力します。resourcesディレクトリが を指していることがわかります$USER_HOME/.griffon/1.4.0/projects/<project_name>/resources。そのディレクトリを調べると、探しているファイルが の中にあることがわかりますgriffon-app/resources。これは、テスト クラスパスが正しく構成されていないことを意味します$USER_HOME/.griffon/1.4.0/projects/<project_name>/resources/griffon-app/resources。これは明らかにバグであり、おそらく$GRIFFON_HOME/scripts/_GriffonClasspath.groovyスクリプトに見られます。JIRA http://jira.codehaus.org/browse/griffonチケットを提出していただけますか? ありがとう!

于 2013-09-12T20:23:38.747 に答える