单元测试Java聊天应用程序

Epi*_*aph 3 java networking unit-testing chat

我用Java开发了一个基本的聊天应用程序.它由服务器和多个客户端组成.服务器不断监视传入的消息并将它们广播给所有客户端.客户端由Swing GUI组成,其中包含文本区域(用于服务器和其他客户端发送的消息),文本字段(用于发送文本消息)和按钮(SEND).客户端还会持续监视来自其他客户端的传入消息(通过服务器).这是通过线程和事件监听器实现的,应用程序按预期工作.

但是,我如何进行单元测试我的聊天应用程序?由于这些方法涉及与服务器建立连接以及从服务器发送/接收消息,因此我不确定这些方法是否应该进行单元测试.根据我的理解,不应对连接数据库或网络等任务进行单元测试.

我能想到的几个测试用例是:
1)文本字段的最大限制
2)客户端可以连接到服务器
3)服务器可以连接到客户端
4)客户端可以发送消息
5)客户端可以接收消息
6 )服务器可以发送消息
7)服务器可以接收消息
8)服务器可以接受来自多个客户端的连接

但是,由于上述大多数方法都涉及某种网络通信,我无法进行单元测试.我该如何进行单元测试我的聊天应用程序?

Fre*_*rik 5

您应该单独测试服务器和客户端.

这样做的方法是使用模拟对象来模拟服务器(用于测试客户端)或客户端(用于测试服务器).

模拟服务器将具有与真实服务器相同的方法,但您可以决定它们返回什么,即模拟连接错误,超时等.因为它是模拟,您可以完全控制功能而不是不得不担心实际的连接错误.

对于Java,请查看Mockito模拟框架.