gpt4 book ai didi

java - 由于服务器一旦接受连接就会阻塞,我应该如何一起测试客户端和服务器?

转载 作者:行者123 更新时间:2023-12-01 13:11:44 24 4
gpt4 key购买 nike

我正在编写一个客户端-服务器系统。而且我想写一个Cucumber测试来测试两者是否正确交互。

但是,如果我将服务器和客户端都放入一个测试中,当我的服务器开始接受连接时,它将阻塞并且测试将无法继续。这是正常的,因为服务器在监听连接时应该阻塞。

那么我应该如何进行这样的测试呢?

我的 Cucumber 功能是这样的:

Feature: Client Can Connect.

Scenario: Client can connect to server.
Given Server is up and running.
When Client is up and tries to connect to server.
Then Server accepts connection.

我对此的步骤定义是:

public class ClientConnectsServerStepDefinition {

@Given("^server is up and running$")
public void server_is_up_and_running() {
TheServer theServer = new TheServer("localhost", 5776);
theServer.start(); //The whole test would block at here and would not proceed
}

@When("^client is up and tries to connect to server$")
public void client_is_up_and_tries_to_connect() {
TheClient theClient = new TheClient("localhost", 5776);
theClient.start();
}

@Then("^server accepts connection.$")
public void the_server_accepts_connection() {
Assert.assertTrue(theServer.isConnected);
}
}

我曾经尝试将服务器和客户端放在单独的线程中。但这没有帮助,因为我无法从服务器或客户端获得任何反馈,因为它们被分成两个线程。

我正确地编写了测试吗?请批评我的代码。感谢您的大力支持。

最佳答案

在单独的线程中启动服务器。使其成为守护线程,以便当客户端停止时一切都会停止,或者当(最后一个)客户端断开连接时让它退出。

关于java - 由于服务器一旦接受连接就会阻塞,我应该如何一起测试客户端和服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22804711/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com