2016-03-17 80 views
0

我想爲我寫的小型服務器應用程序編寫一些集成測試,但我不知道該從哪開始。我有以下的服務器代碼:集成測試小型Java服務器應用程序

import java.net.*; 
import java.io.*; 

public class KKMultiServer { 
    public static void main(String[] args) throws IOException { 

    if (args.length != 1) { 
     System.err.println("Usage: java KKMultiServer <port number>"); 
     System.exit(1); 
    } 

     int portNumber = Integer.parseInt(args[0]); 
     boolean listening = true; 

     try (ServerSocket serverSocket = new ServerSocket(portNumber)) { 
      while (listening) { 
       new KKMultiServerThread(serverSocket.accept()).start(); 
      } 
     } catch (IOException e) { 
      System.err.println("Could not listen on port " + portNumber); 
      System.exit(-1); 
     } 
    } 
} 

我的其他類:

import java.net.*; 
import java.io.*; 

public class KKMultiServerThread extends Thread { 
    private Socket socket = null; 

    public KKMultiServerThread(Socket socket) { 
     super("KKMultiServerThread"); 
     this.socket = socket; 
    } 

    public void run() { 

     try (
      PrintWriter out = new PrintWriter(socket.getOutputStream(), true); 
      BufferedReader in = new BufferedReader(
       new InputStreamReader(
        socket.getInputStream())); 
     ) { 
      String inputLine, outputLine; 
      KnockKnockProtocol kkp = new KnockKnockProtocol(); 
      outputLine = kkp.processInput(null); 
      out.println(outputLine); 

      while ((inputLine = in.readLine()) != null) { 
       outputLine = kkp.processInput(inputLine); 
       out.println(outputLine); 
       if (outputLine.equals("Bye")) 
        break; 
      } 
      socket.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

(來自Oracle's page兩者)​​

我怎麼會去編寫集成測試對於這樣的代碼?我不知道從哪裏開始。我過去做過的唯一集成測試就是使用Selenium和Web應用程序,從來沒有像這樣的多線程套接字服務器應用程序。

回答

0

將您的套接字設置爲偵聽端口80,然後您可以使用您用於集成測試的工具(硒等)。你的網址將是「http://localhost

0

它更多的是你會測試什麼場景而不是如何測試。例如:如果其簡單請求回覆測試,則可以以setUp()方式啓動服務器和客戶端,然後在您的測試中嘗試將不同請求從客戶端會話傳遞到服務器進程並檢查其答覆。如果服務器回覆消息流,則收集該消息流並驗證消息順序,消息內容(或響應)或服務器發送什麼類型的對象。除此之外,您還可以進行會話生命週期測試,例如:一般客戶端場景在單個會話中包含什麼內容。您還可以測試當多個客戶端請求同一臺服務器時,服務器進程如何響應。在這種情況下,可以使用正常的測試框架,如JUnit或TestNG。如果這涉及到很多,你可以看一下Citrus Framework

相關問題