我想实现和单元测试(不一定是TDD)与某个应用协议中使用的TCP服务器进行通信的客户端应用程序。客户机/服务器 - 如何从网络逻辑中分离协议?
我在here (1)和here (2)这样的地方见过,协议代码应该最好从网络代码中分离出来,这样我可以单独对每一个进行单元测试。
但是我无法理解我应该如何设计和实现这些部分。
第一个链接使用方法HelloMessage()
和HowdyMessage()
讨论MyProtocolHandler
类。这是否意味着协议处理程序预计会有两种方法来生成消息并处理响应?我将如何使用它们?还有一件事,每个消息/响应对应该有不同的ProtocolHandler
类,或者只有一个类适用于所有消息/响应对?
第二个链接说的是Reader
和Writer
。再次,我不能说我应该如何使用它们。
这两个只是例子。主要问题是,我怎样才能从网络中分离出逻辑并对其进行单元测试?我必须说我还没有尝试过任何东西;我习惯于编写耦合的代码,不知道从哪里开始。
这正是我如何实现它,使用一个类。然而,我对这个问题中链接文本的理解是,可以从实现API(协议代码)的代码中分离使用套接字的代码(网络代码),这样我就可以测试后者而不必实际上执行网络。如何做到这一点是我无法理解的。 – Piovezan
@Piovezan,我增加了更多的信息,但你必须努力工作,并提出一个设计。从简单的事情开始,然后你会开始找出更好的方法来做到这一点。 – rodolk
我会尝试选项1.在选项2中,消息队列是指完整的选项,如RabbitMQ或常规Java队列? – Piovezan