有沒有任何'好'的方法可以讓等待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