我正在参加软件测试课程,作为我的计算机科学选修课程的一部分。
现在我们正在测试由研究生制作的软件,它不是很漂亮,我正在测试的这个类有以下方法,起初看起来很明显它使用线程而且它似乎正在创建一个监听器通过端口监听,有人可以解释一下这段代码在做什么吗?我该如何测试这个功能?
public void startServer() throws IOException {
ServerSocket ss = new ServerSocket(portNum);
while(true) {
Socket s = ss.accept();
Thread t = new Thread(new ConnectionHandler(s));
t.start();
}
}
答案 0 :(得分:1)
此代码的作用是侦听端口。每次客户端连接时,它都会将工作委托给新线程。这样服务器套接字可用于提供更多请求。
测试连接处理程序可能是可行的,连接处理程序似乎包含最需要测试的代码。对于其余部分,您将必须创建连接到此套接字的客户端线程,此时您所编写的内容不是单元测试。像这样直接实例化类的代码(而不是注入或传入实现接口的对象)使得很难替换模拟。
我打算编写单元测试以彻底覆盖连接处理程序,然后创建一个测试工具(可以在另一个jvm中运行的单独程序)来创建连接到此的线程。