我想實現和單元測試(不一定是TDD)與某個應用協議中使用的TCP服務器進行通信的客戶端應用程序。客戶機/服務器 - 如何從網絡邏輯中分離協議?
我在here (1)和here (2)這樣的地方見過,協議代碼應該最好從網絡代碼中分離出來,這樣我可以單獨對每一個進行單元測試。
但是我無法理解我應該如何設計和實現這些部分。
第一個鏈接使用方法HelloMessage()
和HowdyMessage()
討論MyProtocolHandler
類。這是否意味着協議處理程序預計會有兩種方法來生成消息並處理響應?我將如何使用它們?還有一件事,每個消息/響應對應該有不同的ProtocolHandler
類,或者只有一個類適用於所有消息/響應對?
第二個鏈接說的是Reader
和Writer
。再次,我不能說我應該如何使用它們。
這兩個只是例子。主要問題是,我怎樣才能從網絡中分離出邏輯並對其進行單元測試?我必須說我還沒有嘗試過任何東西;我習慣於編寫耦合的代碼,不知道從哪裏開始。
這正是我如何實現它,使用一個類。然而,我對這個問題中鏈接文本的理解是,可以從實現API(協議代碼)的代碼中分離使用套接字的代碼(網絡代碼),這樣我就可以測試後者而不必實際上執行網絡。如何做到這一點是我無法理解的。 – Piovezan
@Piovezan,我增加了更多的信息,但你必須努力工作,並提出一個設計。從簡單的事情開始,然後你會開始找出更好的方法來做到這一點。 – rodolk
我會嘗試選項1.在選項2中,消息隊列是指完整的選項,如RabbitMQ或常規Java隊列? – Piovezan