Spring和JUnit的整合

abcbbc發表於2007-05-14

相信Kent Beck測試驅動開發理念以為越來越多的人接受,最近在做struts+hibernate+spring的開發中有點心得,和大家一同分享。下面是以一個web專案為討論的,測試主要設計到spring的實現類和strust的Action類的測試,其中主要問題就是要提供一個ApplicationContext為TestCase呼叫,這樣我們引用了一個JUnitHelper工具類進行相關Spring的操作,如提供ApplicationContext環境,下面我們就實現類測試和Action類測試進行一下講解,其中資料庫連線由spring控制。

實現類測試比較簡單,我們主要是測試介面的功能實現,如我們有一介面為PersonDao,實現類為PersonDaoImpl,在JUnitHelper中我們建立一方法getApplicationContext來提供ApplicationContext環境,在getApplicationContext程式碼中我們返回一個FileSystemXmlApplicationContext物件。介面PersonDao的物件實現可從ApplicationContext直接獲取。 PersonDao person= (PersonDao) JUnitHelper.getApplicationContext().getBean("PersonDao") ; 然後測試PersonDao介面的方法介面。

strusts的Action(Action例項繼承了spring的ActionSupport)測試需要用到strutstestcase,可以從sourceforge上下載,測試action的關鍵點是將WebApplicationContext和ServletContext進行關聯,首先我們要獲取WebApplicationContext,這裡我們使用XmlWebApplicationContext進行例項化,然後將WebApplicationContext和ServletContext的屬性值進行繫結即可。JUnitHelper有一個方法setWebApplicationContext就是進行繫結操作的。在MockStrutsTestCase的setup方法中,我們進行繫結操作: JUnitHelper.setWebApplicationContext(getActionServlet().getServletContext()) ; 餘下的測試就是標準的strutstestcase的測試方法。
[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/219138/viewspace-915006/,如需轉載,請註明出處,否則將追究法律責任。

相關文章