2016-03-17 4 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 и веб-приложениями, а не с многопоточным серверным приложением типа сокетов.

ответ

0

Установите гнездо для прослушивания порта 80, а затем вы можете использовать инструменты, которые вы использовали для тестирования интеграции (селен и т. Д.). Ваш url будет «http://localhost»

0

Его больше того, что сценарий вы проверили бы, а не как тестировать. Например, если это простое тестирование ответа на запрос, вы можете запустить сервер и клиент как setUp(), а затем в своих тестах попытаться передать разные запросы от сеанса клиента к серверному процессу и проверить его ответ. Если сервер отвечает в потоке сообщений, то собирайте этот поток и проверяйте порядок сообщений, содержимое сообщения (или ответ) или какой тип объекта отправляет сервер. Кроме того, вы также можете провести тест жизненного цикла сеанса, например: что будет включать общий сценарий клиента в один сеанс. Вы также можете проверить, как реагирует сервер, когда несколько клиентов запрашивают один и тот же сервер. В этом случае можно использовать обычные тестовые среды, такие как JUnit или TestNG. Если это связано с гораздо большим, чем вы можете взглянуть на Citrus Framework, а также

Смежные вопросы