rocket
走在agile的小路上
BlogJava
首頁
新隨筆
聯系
聚合
管理
隨筆-55 評論-208 文章-0 trackbacks-0
Spring+hibernate 單元測試框架總結
這兩天的花費了一些時間在使用spring-mock進行spring的單元測試問題上,基本上對這個問題有了一個完整的解決方案
下面將對相關學習到和思考到的一些問題進行一下整理:
1、首先明確一下問題:要對什么進行單元測試?
我的問題是圍繞這一個DAO展開,我定義了一個DAO接口XXXDAO,并且寫了該DAO的實現XXXDAOImpl,然后使用spring對接口的實現進行管理:
<
bean
id
="XXXDAO"
class
="com.easou.datastat.base.dao.impl.XXXDAOImpl"
>
<
property
name
="sessionFactory"
>
<
ref
bean
="sessionFactory"
/>
</
property
>
<
property
name
="hibernateTemplate"
>
<
ref
bean
="hibernateTemplate"
/>
</
property
>
</
bean
>
現在問題開始明確了,我要對XXXDAOImpl進行單元測試。這里需要指明一個問題就是單元測試,測試的是有實現代碼的實現類,而不是接口。
2、接著是下一個問題,如何取得Sping的上下文關系呢?
這里就需要用到spring-mock了,其中有一個測試基類是AbstractTransactionalDataSourceSpringContextTests
我讓測試用例XXXDAOImplTestcase繼承AbstractTransactionalDataSourceSpringContextTests,然后override其中的方法getConfigLocations()
具體代碼如下:
public
class
XXXDAOImplTestCase
extends
AbstractTransactionalDataSourceSpringContextTests
{
@Override
protected
String[] getConfigLocations()
{
//
TODO get the spring context
String[] config
=
new
String[]
{
"
file:D:\\javawork\\workspace\\datastat\\docroot\\WEB-INF\\applicationContext.xml
"
,
"
file:D:\\javawork\\workspace\\datastat\\docroot\\WEB-INF\\applicationContext-base.xml
"
}
;
return
config;
}
}
不難看出,該方法是為了讀入spring的上下文信息,這樣的話這個測試用例就可以直接使用spirng中定義的bean了
但是這里需要注意一個問題*,就是文件路徑的問題,這里為了能夠清楚地說明文件的路徑規則我引用了spring-mock官方的getConfigLocation方法說明
Subclasses must implement this method to return the locations of their config files. A plain path will be treated as class path location. E.g.: "org/springframework/whatever/foo.xml". Note however that you may prefix path locations with standard Spring resource prefixes. Therefore, a config location path prefixed with "classpath:" with behave the same as a plain path, but a config location such as "file:/some/path/path/location/appContext.xml" will be treated as a filesystem location.
3 好了,該到最后一個問題了,取得Spirng上下問中定義的bean的實例來進行單元測試
這里有兩種方法,一種是定義一個代測單元的對象,然后定義好get,set方法,AbstractTransactionalDataSourceSpringContextTests會自動根據Spring的上下文得到待測單元的具體實現。
private
ExQueryDAO exQqueryDAO;
/** */
/**
*
@return
返回 exQqueryDAO。
*/
public
ExQueryDAO getExQqueryDAO()
{
return
exQqueryDAO;
}
/** */
/**
*
@param
exQqueryDAO 要設置的 exQqueryDAO。
*/
public
void
setExQqueryDAO(ExQueryDAO exQqueryDAO)
{
this
.exQqueryDAO
=
exQqueryDAO;
}
另外一種就是使用applicationContext.getBean("XXXDAO");的方法取得實例
XXXDAO xxxDAO = (XXXDAO)applicationContext.getBean("XXXDAO");
接下來你就可以用這個bean的具體實現對相關方法進行unittest了
這里補充一個問題就是單元測試的運行環境問題*,由于你可能在spring的配置文件中指定一些外部類所以你必須在junit的運行環境中指定使用到的classpath,下面是eclipse的junit配置classpath
最后我對整體的spring+hibernate的jsf框架進行了一下單元測試的框架總結,主要多了一個基本的BaseTestCase,用于統一讀取applicationContext
可以看到下面的pagebean和jsp頁面以及相關的taglib的單元測試我還沒有完成:),我將在今后幾天繼續研究相關的單元測試問題
posted on 2006-08-25 00:29
rocket
閱讀(6246)
評論(4)
編輯
收藏
評論:
#
re: Spring+hibernate 單元測試框架總結 2006-08-25 08:55 |
sjun
不錯,畫的測試圖把測試過程描述得很清晰,頂一下!
回復
更多評論
#
re: Spring+hibernate 單元測試框架總結[未登錄] 2007-06-13 20:08 |
Jack
rocket 支持你。
回復
更多評論
#
re: Spring+hibernate 單元測試框架總結 2007-09-25 11:43 |
cocin0923@sina.com.cn
不錯,圖畫的不錯,一下就知道是咋回事了
回復
更多評論
#
re: Spring+hibernate 單元測試框架總結
2007-11-17 15:25 |
汪保杰(Jack)
管理與技術群
47763528
請快加入,要滿了!
回復
更多評論
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
Dict.CN 在線詞典, 英語學習, 在線翻譯
QQ:19794405
agilelife分享群:59765983
QQ上少了,請大家加入msn group:
agilelife@groups.msn.com
敏捷項目實踐經驗分享
TDD,重構,迭代,結對
<
2006年8月
>
日
一
二
三
四
五
六
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(7)
給我留言
查看公開留言
查看私人留言
我參與的團隊
深圳Java俱樂部(0/0)
隨筆分類
(15)
UI相關
好文翻譯(1)
常用框架(1)
敏捷方法(4)
數據庫相關
構架設計(2)
經驗積累(3)
項目管理(4)
隨筆檔案
(55)
2008年12月 (1)
2008年7月 (2)
2008年5月 (8)
2008年3月 (1)
2008年2月 (4)
2007年10月 (1)
2007年9月 (4)
2007年7月 (3)
2007年5月 (2)
2007年4月 (6)
2007年3月 (5)
2007年2月 (2)
2007年1月 (3)
2006年11月 (3)
2006年10月 (1)
2006年8月 (1)
2006年7月 (1)
2006年5月 (2)
2006年4月 (2)
2006年3月 (3)
相冊
rocket
搜索
積分與排名
積分 - 133646
排名 - 464
最新評論
1.?re: 找了一天的jsp格式化工具,最后還是用回workshop
nb@2
--3
2.?re: 一個以前沒有注意的問題:java構造函數的執行順序
不錯,很有幫助
--王鵬飛
3.?re: 一個新java web項目入手過程總結
標記一下。
--何楊
4.?re: 單元測試究竟是測試什么?[未登錄]
單元測試是在測邏輯,包括條件判定,循環等。博主的這段代碼不包括任何邏輯,當然不需要用單元測試去覆蓋。
--王輝
5.?re: 找了一天的jsp格式化工具,最后還是用回workshop
傻逼
--2
閱讀排行榜
1.?一個新java web項目入手過程總結(8515)
2.?一個以前沒有注意的問題:java構造函數的執行順序(8211)
3.?找了一天的jsp格式化工具,最后還是用回workshop(7395)
4.?dwr reverse-ajax 實例解析(6613)
5.?Spring+hibernate 單元測試框架總結(6246)
評論排行榜
1.?不仁義,不仗義(24)
2.?招聘java程序員,系統架構師(20)
3.?dwr reverse-ajax 實例解析(11)
4.?找了一天的jsp格式化工具,最后還是用回workshop(10)
5.?單元測試究竟是測試什么?(10)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 rocket
主站蜘蛛池模板:
久久这里只精品热免费99
|
亚洲色成人四虎在线观看
|
97在线观免费视频观看
|
日本在线看片免费
|
亚洲色欲一区二区三区在线观看
|
黄色一级免费网站
|
无码不卡亚洲成?人片
|
久久91亚洲精品中文字幕
|
你懂的在线免费观看
|
亚洲精品美女久久久久99
|
成人爽a毛片免费
|
亚洲国产精品线在线观看
|
99久久99久久免费精品小说
|
内射干少妇亚洲69XXX
|
日韩中文字幕精品免费一区
|
亚洲狠狠成人综合网
|
国产高清免费的视频
|
一级中文字幕免费乱码专区
|
曰韩亚洲av人人夜夜澡人人爽
|
国产偷伦视频免费观看
|
成年轻人网站色免费看
|
国产l精品国产亚洲区在线观看
|
最近中文字幕大全免费版在线
|
4480yy私人影院亚洲
|
一区二区三区免费高清视频
|
亚洲情XO亚洲色XO无码
|
中文字幕免费视频一
|
亚洲爆乳AAA无码专区
|
亚洲成a人一区二区三区
|
久久免费视频网站
|
亚洲精品午夜在线观看
|
成人爽a毛片免费
|
亚洲一区二区三区四区视频
|
国产三级免费电影
|
亚洲精品理论电影在线观看
|
亚洲国产精品自产在线播放
|
日韩人妻无码精品久久免费一
|
最新亚洲卡一卡二卡三新区
|
亚洲区日韩区无码区
|
99热这里只有精品免费播放
|
亚洲AV无码一区二区三区鸳鸯影院
|