集成测试小型Java服务器应用程序
我想为我已经编写的一个小型服务器应用程序编写一些集成测试,但我不确定从何开始。我有以下服务器代码:集成测试小型Java服务器应用程序,java,multithreading,sockets,testing,integration-testing,Java,Multithreading,Sockets,Testing,Integration Testing,我想为我已经编写的一个小型服务器应用程序编写一些集成测试,但我不确定从何开始。我有以下服务器代码: 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
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);
}
}
}
(摘自)
我将如何为这样的代码编写集成测试?我不知道从哪里开始。我过去所做的唯一集成测试是使用Selenium和web应用程序,而不是像这样的多线程套接字服务器应用程序。将套接字设置为侦听端口80,然后可以使用用于集成测试的工具(Selenium等)。您的url将是“”它更多的是您将测试什么场景,而不是如何测试。例如:如果是简单的请求-应答测试,那么您可以启动服务器和客户端作为setUp(),然后在测试中尝试将不同的请求从客户端会话传递到服务器进程,并检查其应答。如果服务器在消息流中应答,则收集该流并验证消息顺序、消息内容(或响应)或服务器发送的对象类型。除此之外,您还可以进行会话生命周期测试,例如:一般客户端场景在单个会话中包括哪些内容。您还可以测试当有多个客户端请求同一服务器时,服务器进程如何响应。在这种情况下,可以使用JUnit或TestNG等常规测试框架。如果这涉及的内容远不止这些,那么您也可以看看Citrus框架
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();
}
}
}