領測軟件測試網
在這里,我們要驗證三點:
◆無ActionError消息(verifyNoActionErrors())。
◆返回了success轉向路徑。
◆results屬性置于請求范圍內。
如果使用Tiles框架,也可以通過verifyTilesForward()核查success轉向是否指向的正確tiles定義。
public void testSearchByCountry() { setRequestPathInfo("/search.do"); addRequestParameter("country", "FR"); actionPerform(); verifyNoActionErrors(); verifyTilesForward("success", "accommodation.list.def"); assertNotNull(request.getAttribute("results")); } |
在實踐中,我們也許希望對
測試結果進行特定于業務的測試。例如,如果results屬性預計為包含了100個Hotel域對象的List(列表),而我們需要確認列表上的所有賓館均在法國。為了實現此類測試,代碼必須非常類似于標準JUnit測試:
public void testSearchByCountry() { setRequestPathInfo("/search.do"); addRequestParameter("country", "FR"); actionPerform(); verifyNoActionErrors(); verifyForward("success"); assertNotNull(request.getAttribute("results")); List results = (List) request.getAttribute("results"); assertEquals(results.size(), 100); for (Iterator iter = results.iterator(); iter.hasNext();) { Hotel hotel = (Hotel) iter.next(); assertEquals(hotel.getCountry, TestConstants.FRANCE); ... } } |
當遇到更為復雜的測試情況時,您也許希望測試一系列動作。比如,假設用戶搜索所有法國賓館,然后單擊任一搜索結果查看詳細情況。假設我們有一個顯示特定賓館詳細情況的Struts動作,該動作可被調用如下:
/displayDetails.do?id=123456 |
使用StrutsTestCase,我們可以在同一測試內輕松模擬一系列動作。用戶可以搜索法國所有賓館,并單擊查看詳情。
public void testSearchAndDisplay() { setRequestPathInfo("/search.do"); addRequestParameter("country", "FR"); actionPerform(); verifyNoActionErrors(); verifyForward("success"); assertNotNull(request.getAttribute("results")); List results = (List) request.getAttribute("results"); assertEquals(results.size(),100); Hotel hotel = (Hotel) results.get(0); setRequestPathInfo("/displayDetails.do"); addRequestParameter("id", hotel.getId()); actionPerform(); verifyNoActionErrors(); verifyForward("success"); Hotel hotel = (Hotel)request.getAttribute("hotel"); assertNotNull(hotel); ... }
|
文章來源于領測軟件測試網 http://www.kjueaiud.com/
TAG:
開發
驅動