你如何对TCP服务器进行单元测试?它甚至值得吗?

dr.*_*vil 17 .net tdd unit-testing tcp

我正在开发一个小型TCP服务器,它将处理一些TCP数据包,并根据请求采取不同的行为.

我怎么能为此编写单元测试?如果真的很难写,那还值得努力吗?

Jon*_*eet 17

我试着从处理位中提取TCP特定的位.您的协议是否真的是基于数据包的,还是基于流的?如果它是基于流的,你可以让处理部分接受一个流(或者可能是一对流,一个用于输入,一个用于输出),并用一个MemoryStream或你自己的类似流实现提供更多的控制.

无论哪种方式,你基本上都想模拟网络方面的东西,这样你就可以测试真正的逻辑而不需要让网络参与其中.测试网络层(即框架网络类和处理逻辑之间的薄层逻辑)可能会有点困难,但如果你能够做得足够薄,那么测试就不应该太多了.


Dar*_*ark 9

首先要做的是将行为与传入的TCP数据包分开.摘要进入调度表或其他类似的东西.

然后为每个行为编写单元测试,而不管它们是如何被调用的.您可以使用您编写或借用的测试工具测试最终的TCP - >行为层.如果代码被正确分解,那层应该几乎是微不足道的.