コマンドを使用して通常デバッグ/実行しているプロジェクトがありgrails run-app
ます。テストを実行したいのですが、特定のテストのためだけにサーバーを再実行する必要はありません。
私は通常、サーバーを常にバックグラウンドでデバッグ モードで実行しています。
私はiteli-jで実行構成をいじってみましたが、最新の試みはgrails test-app functional: className
コマンドを使用して通常デバッグ/実行しているプロジェクトがありgrails run-app
ます。テストを実行したいのですが、特定のテストのためだけにサーバーを再実行する必要はありません。
私は通常、サーバーを常にバックグラウンドでデバッグ モードで実行しています。
私はiteli-jで実行構成をいじってみましたが、最新の試みはgrails test-app functional: className
Grails 2.4.4 では、baseUrl をオーバーライドすると、localhost 以外のサーバーに対してテストを実行できます。たとえば、AWS でホストされている本番前のサーバーがあり、デプロイ後に Jenkins からスモーク テストとして機能テストのサブセットを実行します。
grails -plain-output test-app -baseUrl=https://foo.bar.org/ -echoOut -echoErr functional:
これは機能しtest-app
ますが、組み込みの tomcat サーバーを起動します。しかし、少し調べてみると、実行中のインスタンスを指すようにサーバー ホストをオーバーライドすると、組み込みの tomcat を起動せずにテストが実行されることがわかりました。これを行うには、次の 2 つの方法があります。
コマンド ラインで値を渡します。
grails -plain-output test-app -Dgrails.server.host=foo.bar.org -baseUrl=https://foo.bar.org/ -echoOut -echoErr functional:
または、特定の環境の Config.groovy の値をオーバーライドすることも機能するはずです。
...
preProd {
...
grails.server.host = 'foo.bar.org'
...
}
...
これは test-app の下には文書化されていませんが、run-app の下に記載されており、test-app でも機能することがわかりました。
これが機能するのは、Grails がサーバーのホスト/ポートへの接続を開こうとして組み込みサーバーを起動する必要があるかどうかを判断し、成功した場合は起動をスキップするためです。
試行錯誤の結果、ベース URL が冗長な情報になっても、両方grails.server.host
を指定すると最良の結果が得られることがわかりました。-baseUrl
おそらくこれは、私のケースにはssl接続が含まれているためですが、-https
代わりに実行しよう-baseUrl=...
としたところ、テストがハングしました。
このプラグインが役立つかもしれません。
このプラグインは、すでに実行中のアプリケーションに対してテストを実行しやすくすることで、Grails の機能テストの開発をより便利にすることを目的としています。Grails 1.3.5 で追加された改良された機能テスト サポートを利用しており、それ以前のバージョンでは動作しません。