-1
我有一个服务器客户端,它使用发送消息的PrintWriter和传入消息的BufferedReader从服务器套接字发送和接收信息。我试图通过BufferedReader向客户端发送字符串并从PrintWriter读取返回的输出来在JUnit中测试没有服务器连接的客户端。从PrintWriter和BufferedReader发送和读取字符串
class Client{
private BufferedReader incomingMessage;
private PrintWriter outgoingMessage;
private StringWriter output;
//Constructor for testing without server connection
public Client(){
output = new StringWriter();
outgoingMessage = new PrintWriter(output);
incomingMessage = new BufferedReader(new InputStreamReader(System.in));
}
//Methods for processing incoming messages and sending responses are
//omitted
//responses are sent using outgoingMessage.println("msg");
public void sendStringToInputStream(String msg){
incomingMessage = new BufferedReader(new StringReader(msg));
}
public String getOutputAsString(){
return output.toString();
}
}
这是我正在运行的测试。
public class ServerMessageTest {
private Client testClient;
private String output;
@Before
public void setUp(){
testClient = new Client();
}
@Test
public void testClientOutputMessage(){
testClient.sendStringToInputStream("GAME A OVER SEND OUTCOME");
output = testClient.getOutputAsString();
String testString = "GAME A OVER PLAYER 1 0 PLAYER 2 0";
Assert.assertEquals(testString, output.toString());
}
}
测试失败显示此:
org.junit.ComparisonFailure:
Expected :GAME A OVER PLAYER 1 0 PLAYER 2 0
Actual :
所以这是与读取输出消息或设置输入消息的问题。我对IO的东西有点新,所以如果有人能指出我做错了什么,我会非常感激!
这实际上不是我的代码。我的部分任务是扩展和测试同学代码的功能。我试图理解他们在这里做什么,但我不能。实际代码中有方法通过BufferedReader和PrintWriter打印和读取行。我不能发布这些,因为我们不被允许。我只需要弄清楚如何从PrintWriter捕获输出流,并通过BufferedReader强制输入而不连接到套接字。我知道他们是输入/输出流。只需要帮助访问它们。 –
它的代码甚至没有什么相关性。你发布的代码有我提到的缺陷。如果这不是真正的代码或所有相关代码,或者您询问的实际问题并未完全包含在您的问题中,那么这是完全浪费时间。 – EJP