有没有任何'好'的方法可以让等待recvfrom()调用的线程变得畅通无阻并返回一个错误?单元测试UDP套接字处理代码
这样做的动机是为包含读取UDP数据报的单元的系统编写单元测试。其中一个分支处理recvfrom调用本身的错误。代码不需要区分不同类型的错误,只需设置一个标志即可。
我想过从另一个线程关闭套接字,或者关闭它,导致recvfrom返回一个错误,但这似乎有点沉重。我在其他地方看到发送一个超大的数据包就可以做到这一点,因此设置了一个实验,在这个实验中,一个16K缓冲区被发送到一个recvfrom,等待4K,但这不会导致错误。 recvfrom只返回4096,表示它已经得到了很多字节。
问题的一部分是我已经继承了一个已经存在的设计,并且添加类可能会弄乱太多的羽毛,尽管它可能会来到那 – JustJeff 2010-05-22 02:47:25
@JustJeff:要最小化代码更改,您可以使用#define来重新定义你想模拟错误的函数。然后你编译一个选项,所有那些只在你的测试套件代码中定义。 – 2010-05-22 02:50:47
@Brian R. Bondy - 是的,理想情况下,被测试单元将是可交付代码,而#defining从它下面recvfrom使它无法交付,我可能能够提出“至少.cpp文件是不是mod'd“ – JustJeff 2010-05-22 17:01:08