我有一个C#模块负责获取在Windows Vista计算机上“连接到互联网”的网络适配器列表。该模块使用“Network List Manager API”(或NLM API)遍历所有网络连接并返回IsConnectedToInternet值为true的所有网络连接。单元测试模块,检查互联网连接
我收到了一些建议,这个模块的实现在这个SO question
为了测试这个模块,我决定写一个返回基于另一种逻辑网络连接列表界面帮手,所以这将是对原始模块逻辑的一种“现实检查”。请注意,对于测试助手,我愿意使用可能被认为是生产代码不良实践的检测方法(例如,依靠诸如“Google”的一些互联网资源可用 - 以防万一关闭,被我们的内部防火墙阻止等。与部署的产品基础相比,修复测试相对容易)。
我选择的另一种检测方法是尝试使用TcpClient连接到“www.google.com:80”。我的问题:当我有多个连接的适配器(例如无线和LAN)时,检测方法会失败,其中一个出现错误“连接请求是在已连接的套接字上进行的”。
我的问题是三折:
,你会如何去一般测试这样的模块?你是否支持以不同方式做同样事情并比较结果的想法,还是一个矫枉过正的问题,我应该依靠系统的API?我的主要问题在于,预先配置系统非常困难,所以我会提前知道预期的结果。
你会建议什么替代逻辑?前面提到的问题中提到的一件事是查看路由表 - 将每个具有目标为0.0.0.0的路由条目的适配器视为“连接到Internet”,如何考虑?其他建议?
您是否明白为什么当前测试逻辑会出现“已连接”错误?