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
主站蜘蛛池模板:
麻豆最新国产剧情AV原创免费
|
国产无遮挡又黄又爽免费网站
|
最近最好的中文字幕2019免费
|
亚洲理论片在线观看
|
182tv免费视频在线观看
|
国产小视频在线免费
|
亚洲精品中文字幕无码A片老
|
亚洲成人免费在线观看
|
麻豆亚洲av熟女国产一区二
|
99re这里有免费视频精品
|
亚洲综合小说久久另类区
|
**一级一级毛片免费观看
|
亚洲国产综合第一精品小说
|
成人免费福利视频
|
午夜在线a亚洲v天堂网2019
|
青青草国产免费久久久下载
|
亚洲AV成人无码网天堂
|
亚洲精品国产V片在线观看
|
亚洲日韩图片专区第1页
|
久久免费国产视频
|
亚洲一级毛片视频
|
日韩免费无码一区二区视频
|
国产精品亚洲天堂
|
国产亚洲午夜高清国产拍精品
|
免费无码作爱视频
|
亚洲另类春色校园小说
|
日韩视频免费一区二区三区
|
国产亚洲精品第一综合
|
亚洲熟妇丰满多毛XXXX
|
1000部拍拍拍18勿入免费视频下载
|
嫩草在线视频www免费看
|
日韩亚洲Av人人夜夜澡人人爽
|
黄瓜视频影院在线观看免费
|
亚洲AV无码男人的天堂
|
久久国产成人精品国产成人亚洲
|
男人j进入女人j内部免费网站
|
亚洲AV成人无码天堂
|
日批日出水久久亚洲精品tv
|
成人免费区一区二区三区
|
亚洲日本乱码卡2卡3卡新区
|
久久久久亚洲AV成人网人人网站
|