2016-04-08 12 views
1

私はJUnitで書かれた一連のテストケースを持っています。これらのテストケースのサーブレットコンテナに依存しているので、servletから実行したいと思います。たとえば、Testクラスの完全修飾クラス名をサーブレットに渡すと、そのテストケースを実行できるはずです。 これらのテストケースは、Webアプリケーションのクラスパスにあります。JUnit - Webアプリケーションからテストケースを実行する

答えて

0
/** 
* The various JUNIT classes should be passed as the <code>class</code> request paramter in the URL. 
* @param request 
* @param response 
*/ 
private void executeJUNITTestCases(HttpServletRequest request, HttpServletResponse response){ 
    response.setContentType("text/plain"); 
    //Pass the class names of the Test cases in the URL parameter "class" 
    String[] className = request.getParameterValues("class"); 
    try{ 
     if(className = null || className.length == 0){ 
      PrintWriter writer = response.getWriter(); 
      JSONObject obj = new JSONObject(); 
      obj.put("error", "Class names should be provided as parameter values of key [class]"); 
      writer.write(obj.toString()); 
      return; 
     } 

     OutputStream out = response.getOutputStream(); 

     final PrintStream pout = new PrintStream(out); 
     new JUnitCore().runMain(new JUnitSystem(){ 

      public PrintStream out(){ 
       return pout; 
      } 

      public void exit(int arg0){} 
     }, className); 
     out.close(); 
    } 
    catch(IOException e){ 
     e.printStackTrace(); 
    } 

上記のコードは、Webアプリケーションのコンテキスト内でJUnitのテストケースを呼び出すのに役立ちます。

2

サーブレットコンテナが必要な理由はわかりませんが、通常は環境を模擬して制御し、さまざまなケースをシミュレートすることができます。

Unit testing of servlet using mock framework (MOCKITO)では、mockitoを使ってサーブレットを単体テストする方法について説明していますが、この質問にはHow to test my servlet using JUnitも関心があります。

+0

複数のリソースが含まれているトランザクションをテストする必要がある場合は、環境をモックするだけでは不十分な場合があります。 – Apps

関連する問題