遊びのユニットテスト!テストプレイサーバーを必要としないフレームワークアプリケーション

StackOverflow https://stackoverflow.com/questions/6367690

  •  28-10-2019
  •  | 
  •  

質問

私のプレイで私のテストを実行するための1つのオプション!アプリケーションは、コマンドを実行することです play auto-test.

プレイの1つは、実行するテストを特定しているように見えることです。スーパークラスですべてのテストクラスを見つけることです play.test.UnitTest (または別のプレイに相当)。テストクラスが拡張されています UnitTest コンソールにこの部分が吐き出されるように、いくつかのオーバーヘッドが付属しているようです。

INFO   info, Starting C:\projects\testapp\.
WARN   warn, Declaring modules in application.conf is deprecated. Use dependencies.yml instead (module.secure)
INFO   info, Module secure is available (C:\play-1.2.1\modules\secure)
INFO   info, Module spring is available (C:\projects\testapp\.\modules\spring-1.0.1)
WARN   warn, Actually play.tmp is set to null. Set it to play.tmp=none
WARN   warn, You're running Play! in DEV mode
INFO   info, Connected to jdbc:h2:mem:play;MODE=MYSQL;LOCK_MODE=0
INFO   info, Application 'Test App' is now started !

明らかに、そのようなセットアップを必要とするテスト用のプレイ環境を持つことは有用ですが、プレイ環境を必要としないロジックを実行する生産コードをテストするテストクラスがある場合、拡張する必要はありません。 UnitTest プレイ環境を開始するオーバーヘッドを避けることができます。

拡張しないテストクラスがある場合 UnitTest その後、コマンドによって実行されません play auto-test. 。を取得する方法はありますか play auto-test Playの拡張かどうかに関係なく、すべてのテストを実行するコマンド UnitTest?

編集: 誰かが実際に育てました チケット この問題のために

役に立ちましたか?

解決

簡単な答え:いいえ。少し長い答え:Frameworkでコードを変更しない限り。 AutoTESTはサーバーを設定してテストをトリガーするANTタスクですが、ANTタスクを使用していないため、「通常の」ユニットテストは検出されません。

2つのオプションがあります。PlayのANTファイルに追加タスクを追加して、タスクを介してユニットテストを実行するか(関連する瓶も含める必要があります)、またはPlay Test環境の起動に使用されるコードを編集します。

どちらも、フレームワークを特定のレベルに変更することを意味します。プレイを使用していることを提供しますが、なぜすべてのテストがプレイパターンに従うべきではないのだろうかと思います...

他のヒント

これらのテストではプレイが必要ない場合!機能、ライブラリに置いてみませんか?例を使用して(Math Add):Calculator.jarパッケージを作成し、テストを実行した後にAntまたはMavenで構築します。このように、いくつかのプレイでライブラリを使用できます!プロジェクト(または春、ストラット、...必要に応じて。

問題自体が議論の余地がある理由は本当にわかりません。 (プロジェクトのWebパートでも)シンプルで小規模なテストを行うことは、最も普通のことです。フレームワークの初期化の余分なオーバーヘッドは、多くのテストがある場合、ラウンドトリップを大幅に遅くします。チケットで見ることができるように、現在の回避策は ユニットテストを作成して、play.test.unittestの代わりにorg.junit.assertを拡張します

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top