測試驅動開發(TDD)其實不是一個新概念,但這種方法論的實質經常被誤解。以我為例,我覺得測試驅動開發就是寫單元測試,對程式碼進行充分測試。其實這是一種對測試驅動開發的一種最常見的誤解,測試驅動開發不僅是強調測試,同時更強調驅動開發。編寫測試案例的目的不僅是進行測試,而且是一種設計,是對功能及介面的設計,而且是以功能或介面使用者的角度來進行設計,而其他方法學中的設計,則是在開發人員角度上的設計,因此測試驅動開發更有利於產生好的設計。
但是僅僅通過測試進行設計,運行測試來保證代碼質量,還不足以產生高質量的軟體產品。測試驅動開發同時也強調重構,就是對程式碼不合理的地方進行重構,而且這個重構在每次編寫測試、開發、驗證進程中都需要進行,由於有測試用例進行保證,我們可以放心大膽的進行重構,而不用擔心會導致意想不到的後果出現。
回到我們的專案中,在MainServlet中,我們實現了全部的業務邏輯,但是我們很快就會意識到,如果所有應用邏輯都寫到這個類別中,那個這個類別將變成一個巨無霸,最終會變得不可維護,因此我們需要將用戶註冊業務邏輯實作放到用戶模組中去。大家可以看到,我們已經開始重構我們的系統了。
首先,我們建立user包,在該包下面建立UserMngr類,因為我們預估,用戶模組除了維護用戶基本信息外,還需要維護用戶群組、用戶級別、用戶積分等信息,如果讓調用者完全了解這些細節資訊是沒有必要的,因此我們在這裡使用了Facade模式,所有對使用者的操作都透過UserMngr來進行。程式碼如下所示:
public class UserMngr { public static long registerUser(Map<String, Object> userInfo) { return 101; } }
我們看到,在這個類別裡,我們只回傳一個值,什麼也沒做,為的是快速驗證我們的重構架構是可以工作的,具體功能可以在以後添加。另外,要注意的是參數項,這裡用的是Map對象,也就是以類似PHP的數組來傳遞參數。在Java中更常見的作為是為此目的設計一個值物件類,但是這經常造成定義許多值物件類,或者由於共用的需要,一個值物件非常龐大,這裡採用Map來傳遞參數省去了這樣的麻煩。
下面在MainServlet中加入對使用者模組呼叫的程式碼:
private void registerUser(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String userName = null; if (request.getParameter("userName") != null) { userName = request.getParameter("userName"); } Map<String, Object> userInfo = new HashMap<String, Object>(); userInfo.put("userName", userName); long userId = UserMngr.registerUser(userInfo); Map<String, Object> model = new HashMap<String, Object>(); model.put("userId", "" + userId); request.setAttribute("model", model); /*this.getServletContext().getRequestDispatcher("/caporder/apply_capital.jsp") .forward(request, response);*/ }
下面運行測試案例,應該可以通過,這證明我這次對架構的重構是成功的。
以上就是新Java運動:測試驅動開發3---用戶註冊2的內容,更多相關內容請關注PHP中文網(www.php.cn)!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

WebStorm Mac版
好用的JavaScript開發工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)