单元测试lib或DLL中的套接字包装函数,没有它的源代码

时间:2012-11-13 05:18:40

标签: unit-testing

我对单元测试有疑问。我希望有人可以提前给我一些建议。

这是我的问题。 我需要在谷歌单元测试(gtest)上为lib基础编写单元测试,这是关于套接字通信的东西。其中一些包含低级套接字函数,这意味着我还需要对这些函数进行单元测试。顺便说一句,我无法访问lib的源代码=。=#

例如,假设有一个名为AcceptConnection的函数(一些参数......),也许它包裹着SOCKET接受(SOCKET,SOCKADDR *,INT *)。我该怎么测试呢现在没有源代码。看来这是一个关于如何为windows socket API编写单元测试的问题。

我不知道为这些包装函数编写单位函数是否合理,以及如何使单元测试更有效。

问候

Joey Yu

[更新]

我花了一些时间试图找到是否有某种方法可以解决它。似乎现在没有了。没有源代码甚至不知道它使用什么样的系统功能。最糟糕的方式是使用父进程启动单元测试应用程序并重定向系统调用无法正常工作。

2 个答案:

答案 0 :(得分:0)

遇到此链接http://code.google.com/p/googlemock/wiki/ForDummies,它允许模拟gtest。

你应该模拟所有低级套接字函数,只测试lib中的代码。

答案 1 :(得分:0)

您可以尝试在操作系统系统调用中安装一些挂钩并检查正在进行的调用...

或者你可以尝试在库的strace输出中自动进行某种检查。

Here是“linux hooks”搜索的第一个结果,似乎是一种在linux上挂钩调用的好方法。 this是Windows上相同行为的参考。我没有尝试任何BTW。