我有一個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」,如何考慮?其他建議?
您是否明白爲什麼當前測試邏輯會出現「已連接」錯誤?