rocket
走在agile的小路上
BlogJava
首頁(yè)
新隨筆
聯(lián)系
聚合
管理
隨筆-55 評(píng)論-208 文章-0 trackbacks-0
Spring+hibernate 單元測(cè)試框架總結(jié)
這兩天的花費(fèi)了一些時(shí)間在使用spring-mock進(jìn)行spring的單元測(cè)試問(wèn)題上,基本上對(duì)這個(gè)問(wèn)題有了一個(gè)完整的解決方案
下面將對(duì)相關(guān)學(xué)習(xí)到和思考到的一些問(wèn)題進(jìn)行一下整理:
1、首先明確一下問(wèn)題:要對(duì)什么進(jìn)行單元測(cè)試?
我的問(wèn)題是圍繞這一個(gè)DAO展開(kāi),我定義了一個(gè)DAO接口XXXDAO,并且寫(xiě)了該DAO的實(shí)現(xiàn)XXXDAOImpl,然后使用spring對(duì)接口的實(shí)現(xiàn)進(jìn)行管理:
<
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
>
現(xiàn)在問(wèn)題開(kāi)始明確了,我要對(duì)XXXDAOImpl進(jìn)行單元測(cè)試。這里需要指明一個(gè)問(wèn)題就是單元測(cè)試,測(cè)試的是有實(shí)現(xiàn)代碼的實(shí)現(xiàn)類,而不是接口。
2、接著是下一個(gè)問(wèn)題,如何取得Sping的上下文關(guān)系呢?
這里就需要用到spring-mock了,其中有一個(gè)測(cè)試基類是AbstractTransactionalDataSourceSpringContextTests
我讓測(cè)試用例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的上下文信息,這樣的話這個(gè)測(cè)試用例就可以直接使用spirng中定義的bean了
但是這里需要注意一個(gè)問(wèn)題*,就是文件路徑的問(wèn)題,這里為了能夠清楚地說(shuō)明文件的路徑規(guī)則我引用了spring-mock官方的getConfigLocation方法說(shuō)明
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 好了,該到最后一個(gè)問(wèn)題了,取得Spirng上下問(wèn)中定義的bean的實(shí)例來(lái)進(jìn)行單元測(cè)試
這里有兩種方法,一種是定義一個(gè)代測(cè)單元的對(duì)象,然后定義好get,set方法,AbstractTransactionalDataSourceSpringContextTests會(huì)自動(dòng)根據(jù)Spring的上下文得到待測(cè)單元的具體實(shí)現(xiàn)。
private
ExQueryDAO exQqueryDAO;
/** */
/**
*
@return
返回 exQqueryDAO。
*/
public
ExQueryDAO getExQqueryDAO()
{
return
exQqueryDAO;
}
/** */
/**
*
@param
exQqueryDAO 要設(shè)置的 exQqueryDAO。
*/
public
void
setExQqueryDAO(ExQueryDAO exQqueryDAO)
{
this
.exQqueryDAO
=
exQqueryDAO;
}
另外一種就是使用applicationContext.getBean("XXXDAO");的方法取得實(shí)例
XXXDAO xxxDAO = (XXXDAO)applicationContext.getBean("XXXDAO");
接下來(lái)你就可以用這個(gè)bean的具體實(shí)現(xiàn)對(duì)相關(guān)方法進(jìn)行unittest了
這里補(bǔ)充一個(gè)問(wèn)題就是單元測(cè)試的運(yùn)行環(huán)境問(wèn)題*,由于你可能在spring的配置文件中指定一些外部類所以你必須在junit的運(yùn)行環(huán)境中指定使用到的classpath,下面是eclipse的junit配置classpath
最后我對(duì)整體的spring+hibernate的jsf框架進(jìn)行了一下單元測(cè)試的框架總結(jié),主要多了一個(gè)基本的BaseTestCase,用于統(tǒng)一讀取applicationContext
可以看到下面的pagebean和jsp頁(yè)面以及相關(guān)的taglib的單元測(cè)試我還沒(méi)有完成:),我將在今后幾天繼續(xù)研究相關(guān)的單元測(cè)試問(wèn)題
posted on 2006-08-25 00:29
rocket
閱讀(6246)
評(píng)論(4)
編輯
收藏
評(píng)論:
#
re: Spring+hibernate 單元測(cè)試框架總結(jié) 2006-08-25 08:55 |
sjun
不錯(cuò),畫(huà)的測(cè)試圖把測(cè)試過(guò)程描述得很清晰,頂一下!
回復(fù)
更多評(píng)論
#
re: Spring+hibernate 單元測(cè)試框架總結(jié)[未登錄](méi) 2007-06-13 20:08 |
Jack
rocket 支持你。
回復(fù)
更多評(píng)論
#
re: Spring+hibernate 單元測(cè)試框架總結(jié) 2007-09-25 11:43 |
cocin0923@sina.com.cn
不錯(cuò),圖畫(huà)的不錯(cuò),一下就知道是咋回事了
回復(fù)
更多評(píng)論
#
re: Spring+hibernate 單元測(cè)試框架總結(jié)
2007-11-17 15:25 |
汪保杰(Jack)
管理與技術(shù)群
47763528
請(qǐng)快加入,要滿了!
回復(fù)
更多評(píng)論
新用戶注冊(cè)
刷新評(píng)論列表
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問(wèn)
管理
Dict.CN 在線詞典, 英語(yǔ)學(xué)習(xí), 在線翻譯
QQ:19794405
agilelife分享群:59765983
QQ上少了,請(qǐng)大家加入msn group:
agilelife@groups.msn.com
敏捷項(xiàng)目實(shí)踐經(jīng)驗(yàn)分享
TDD,重構(gòu),迭代,結(jié)對(duì)
<
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
常用鏈接
我的隨筆
我的評(píng)論
我的參與
最新評(píng)論
留言簿
(7)
給我留言
查看公開(kāi)留言
查看私人留言
我參與的團(tuán)隊(duì)
深圳Java俱樂(lè)部(0/0)
隨筆分類
(15)
UI相關(guān)
好文翻譯(1)
常用框架(1)
敏捷方法(4)
數(shù)據(jù)庫(kù)相關(guān)
構(gòu)架設(shè)計(jì)(2)
經(jīng)驗(yàn)積累(3)
項(xiàng)目管理(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)
相冊(cè)
rocket
搜索
積分與排名
積分 - 133646
排名 - 464
最新評(píng)論
1.?re: 找了一天的jsp格式化工具,最后還是用回workshop
nb@2
--3
2.?re: 一個(gè)以前沒(méi)有注意的問(wèn)題:java構(gòu)造函數(shù)的執(zhí)行順序
不錯(cuò),很有幫助
--王鵬飛
3.?re: 一個(gè)新java web項(xiàng)目入手過(guò)程總結(jié)
標(biāo)記一下。
--何楊
4.?re: 單元測(cè)試究竟是測(cè)試什么?[未登錄](méi)
單元測(cè)試是在測(cè)邏輯,包括條件判定,循環(huán)等。博主的這段代碼不包括任何邏輯,當(dāng)然不需要用單元測(cè)試去覆蓋。
--王輝
5.?re: 找了一天的jsp格式化工具,最后還是用回workshop
傻逼
--2
閱讀排行榜
1.?一個(gè)新java web項(xiàng)目入手過(guò)程總結(jié)(8515)
2.?一個(gè)以前沒(méi)有注意的問(wèn)題:java構(gòu)造函數(shù)的執(zhí)行順序(8211)
3.?找了一天的jsp格式化工具,最后還是用回workshop(7395)
4.?dwr reverse-ajax 實(shí)例解析(6613)
5.?Spring+hibernate 單元測(cè)試框架總結(jié)(6246)
評(píng)論排行榜
1.?不仁義,不仗義(24)
2.?招聘java程序員,系統(tǒng)架構(gòu)師(20)
3.?dwr reverse-ajax 實(shí)例解析(11)
4.?找了一天的jsp格式化工具,最后還是用回workshop(10)
5.?單元測(cè)試究竟是測(cè)試什么?(10)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 rocket
主站蜘蛛池模板:
国产V亚洲V天堂无码久久久
|
蜜臀AV免费一区二区三区
|
未满十八私人高清免费影院
|
亚洲精品无码少妇30P
|
亚洲精品无码你懂的
|
亚洲欧美自偷自拍另类视
|
亚洲乱码无人区卡1卡2卡3
|
亚洲人成网亚洲欧洲无码
|
亚洲色偷偷综合亚洲av78
|
亚洲精华国产精华精华液好用
|
亚洲精品美女久久久久久久
|
中文字幕亚洲情99在线
|
亚洲欧美精品午睡沙发
|
亚洲欧美在线x视频
|
无遮挡国产高潮视频免费观看
|
一级毛片在线播放免费
|
男女一边摸一边做爽的免费视频
|
亚洲精品V欧洲精品V日韩精品
|
国产香蕉九九久久精品免费
|
手机在线看永久av片免费
|
精品国产免费一区二区
|
亚洲AV无码一区二三区
|
亚洲无人区一区二区三区
|
久久久久亚洲Av片无码v
|
亚洲成人高清在线观看
|
亚洲熟女乱色一区二区三区
|
麻豆安全免费网址入口
|
中文在线观看永久免费
|
中国xxxxx高清免费看视频
|
久久久久国色AV免费观看性色
|
青青草国产免费久久久下载
|
亚洲 国产 图片
|
亚洲毛片在线观看
|
中文字幕无码亚洲欧洲日韩
|
老司机午夜免费视频
|
免费h视频在线观看
|
免费精品人在线二线三线区别
|
又粗又大又猛又爽免费视频
|
亚洲精品无码乱码成人
|
亚洲六月丁香六月婷婷蜜芽
|
国产精品亚洲专区无码唯爱网
|