1

古いコマンド ライン デザイン パターンを使用する Java Web アプリケーション用の junit を作成しようとしています (この古いアプリケーションにはフレームワークが使用されていません)。アプリケーションにシナリオがあります。

アプリケーションがサーバーにデプロイされると、すべてがサーバーにデプロイされる前に、まずサーバーが を見つけてweb.xmlロードし、TestDataServlet(http サーブレットを拡張する web.xml で構成されたサーブレット クラス) を実行します。

これは、すべてのプロパティ ファイル (アプリケーション コードの Java クラスで使用されるすべてのエンドポイントに関する情報を含む) をロードするスレッドであるクラスをTestDataServlet呼び出し、TestRunnableブラウザーでアプリケーションをヒットする前にそれを初期化します。

簡単にテストできるように、junit を実行する前にすべてのプロパティ ファイルをロードするワンタイム ステップ アップを使用して、このアプリケーションの junit を作成しようとしています。

私のアプリケーションはフレームワークを使用していないため、Spring Junit のようにそれを行うことができませんでした。

とにかくそれを行うには?TestDataServletjunit クラスを実行する前に を実行できますか?

どんな助けでも大歓迎です。

4

1 に答える 1

2

リクエスト「isTestRunnableCompleted」を処理できるように TestDataServlet を変更します。戻り値を true または false にします。

JUnit テストで、setup() メソッドを実装します。TestDataServlet を呼び出して、ランナブルを開始します。次に、setup() メソッド内の while() ループで、1 秒ごとに TestDataServlet を呼び出して「isTestRunnableCompleted」をチェックします。"false" の場合は、1 秒間スリープしてから、ループが再度呼び出しを行えるようにします。問題が発生した場合に備えて、ループにある種のタイムアウトを実装することもできます。

幸運を。

public class TestDataServlet
{
  public void doGet( HttpServletRequest request, HttpServletResponse response )
    throws ServletException, IOException 
  {
    // Look for some indicator in the request that the caller wants a "status"
    // of the test data being set up
    if ( request.getParameter( "isTestDataRunnableCompleted" ) != null )
    {
      boolean status = testDataRunnableThread.isAlive();

      PrintWriter writer = response.getWriter();
      writer.println( Boolean.toString( status ) );
      writer.close();       
    }
    else
    {
      // If we get here, then start the test data runnable thread
    }
  }
}
于 2013-02-13T19:18:10.713 に答える