2

コマンドを使用して通常デバッグ/実行しているプロジェクトがありgrails run-appます。テストを実行したいのですが、特定のテストのためだけにサーバーを再実行する必要はありません。

私は通常、サーバーを常にバックグラウンドでデバッグ モードで実行しています。

私はiteli-jで実行構成をいじってみましたが、最新の試みはgrails test-app functional: className

4

2 に答える 2

3

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=...としたところ、テストがハングしました。

于 2016-11-23T20:15:35.343 に答える
1

このプラグインが役立つかもしれません。

Grails 機能テスト開発プラグイン

このプラグインは、すでに実行中のアプリケーションに対してテストを実行しやすくすることで、Grails の機能テストの開発をより便利にすることを目的としています。Grails 1.3.5 で追加された改良された機能テスト サポートを利用しており、それ以前のバージョンでは動作しません。

于 2014-10-20T15:46:20.787 に答える