2016-03-17 110 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

相关问题