7

私は Java 用の Google Appengine (GAE/J) を使用しています。その上で、Jersey REST フレームワークを使用します。

今、私はローカル JUnit テストを実行したいと考えています。テスト

残念ながら、Jersey/Jetty の組み合わせは新しいスレッドを生成します。GAE は、1 つのスレッドのみが実行されることを想定しています。最終的には、Jersey リソース内にデータストアがないか、異なるデータストアを持つ複数のデータストアを持つことになります。

回避策として、GAE ローカル環境を一度だけ初期化し、それを静的変数に入れ、GAE リソース内に多くのチェックを追加します (このスレッドには開発環境がありませんか? 静的環境を再利用します)。もちろん、これらのチェックはJUnitテスト内でのみ実行する必要があります..(以前に尋ねました:「コードがJUnitテスト内で実行されているかどうかを確認するにはどうすればよいですか?」-ここにリンクを直接投稿することは許可されていません: -|)

4

2 に答える 2

7

システムプロパティを使用するかもしれません... Junit実行の場合、JVM引数を介してJavaシステムプロパティを設定し、次のようにテストできます。

  • 次のように(おそらくIDEなどで)テストするときに、run config parmsを介してJVM引数を渡します。 -DRunningTestsOnly=true
  • コードで:if ("true".equals(System.getProperty("RunningTestsOnly")))

以前のJUnitテストでこれと同様のことを行ったことがあります。想定を使用してテストを無視しました。パワー不足の開発用PCで実行するには時間がかかりすぎると思います...

  • JVM引数を渡します:-DexecuteQuickRunningTestsOnly=true
  • メソッドの先頭にプロパティ セットを配置した場合、実行速度の遅いテスト メソッドを無視するには、次のようにします。assumeThat(System.getProperty("executeQuickRunningTestsOnly", "false"), is("false"));
于 2010-03-04T07:15:01.700 に答える
1

アイデア: 例外を作成し、例外のスタック トレースを繰り返し処理して、そこにある junit パッケージのクラスであるかどうかを確認できます。

于 2010-05-09T07:08:50.887 に答える