2009-06-25 40 views
1

我有一個負責網絡通信的類。我想爲它進行單元測試。編寫網絡相關類的單元測試

這裏是我卡住的地方,爲了寫一個測試它,我必須實現一個服務器進行通信,但是反過來需要進行自己的測試。

如何爲這樣的課程編寫測試?

回答

5

除非您編寫低級驅動程序,否則您的類無疑依賴於其他類來進行實際的通信。在那種情況下,如果它們不容易被嘲弄,我會使用依賴注入爲它們提供這些類或包裝。在你的測試中,你會提供你所依賴的類的模擬版本(或者如果你不能嘲笑實際的類,那麼包裝器會提供)。驗證您的方法在您提供的模擬中調用具有正確參數的正確方法。確保你有足夠的單元測試來滿足自己,你已經覆蓋了真正的依賴關係的全部行爲。這對你的單元測試就足夠了。

您還需要一些集成測試。不幸的是,最簡單的方法是開發一個完整的模擬服務器來進行通信。請注意,您的模擬服務器只需要實現接口 - 而不是另一端的實際代碼。提供一些額外的方法,允許您爲集成測試設置服務器,以便發生模擬服務器的預期行爲。

1

如果你單元 -testing一類是負責網絡通信,那麼你只測試你正在做正確的通信。因此,提供一個模擬(如虛擬)服務器以便與之通信。有很多可以使用的模擬庫,例如EasyMock和jMockit。如果你想測試與實際服務器的實際通信,那麼這就是集成-測試。當然,單元測試涵蓋的確切定義因開發者而異。