rocket
走在agile的小路上
BlogJava
首頁
新隨筆
聯(lián)系
聚合
管理
隨筆-55 評(píng)論-208 文章-0 trackbacks-0
Spring+hibernate 單元測(cè)試框架總結(jié)
這兩天的花費(fèi)了一些時(shí)間在使用spring-mock進(jìn)行spring的單元測(cè)試問題上,基本上對(duì)這個(gè)問題有了一個(gè)完整的解決方案
下面將對(duì)相關(guān)學(xué)習(xí)到和思考到的一些問題進(jìn)行一下整理:
1、首先明確一下問題:要對(duì)什么進(jìn)行單元測(cè)試?
我的問題是圍繞這一個(gè)DAO展開,我定義了一個(gè)DAO接口XXXDAO,并且寫了該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)在問題開始明確了,我要對(duì)XXXDAOImpl進(jìn)行單元測(cè)試。這里需要指明一個(gè)問題就是單元測(cè)試,測(cè)試的是有實(shí)現(xiàn)代碼的實(shí)現(xiàn)類,而不是接口。
2、接著是下一個(gè)問題,如何取得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è)問題*,就是文件路徑的問題,這里為了能夠清楚地說明文件的路徑規(guī)則我引用了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 好了,該到最后一個(gè)問題了,取得Spirng上下問中定義的bean的實(shí)例來進(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");
接下來你就可以用這個(gè)bean的具體實(shí)現(xiàn)對(duì)相關(guān)方法進(jìn)行unittest了
這里補(bǔ)充一個(gè)問題就是單元測(cè)試的運(yùn)行環(huá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頁面以及相關(guān)的taglib的單元測(cè)試我還沒有完成:),我將在今后幾天繼續(xù)研究相關(guān)的單元測(cè)試問題
posted on 2006-08-25 00:29
rocket
閱讀(6240)
評(píng)論(4)
編輯
收藏
評(píng)論:
#
re: Spring+hibernate 單元測(cè)試框架總結(jié) 2006-08-25 08:55 |
sjun
不錯(cuò),畫的測(cè)試圖把測(cè)試過程描述得很清晰,頂一下!
回復(fù)
更多評(píng)論
#
re: Spring+hibernate 單元測(cè)試框架總結(jié)[未登錄] 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ò),圖畫的不錯(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++博客
博問
管理
Dict.CN 在線詞典, 英語學(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)
給我留言
查看公開留言
查看私人留言
我參與的團(tuán)隊(duì)
深圳Java俱樂部(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
搜索
積分與排名
積分 - 133261
排名 - 463
最新評(píng)論
1.?re: 找了一天的jsp格式化工具,最后還是用回workshop
nb@2
--3
2.?re: 一個(gè)以前沒有注意的問題:java構(gòu)造函數(shù)的執(zhí)行順序
不錯(cuò),很有幫助
--王鵬飛
3.?re: 一個(gè)新java web項(xiàng)目入手過程總結(jié)
標(biāo)記一下。
--何楊
4.?re: 單元測(cè)試究竟是測(cè)試什么?[未登錄]
單元測(cè)試是在測(cè)邏輯,包括條件判定,循環(huán)等。博主的這段代碼不包括任何邏輯,當(dāng)然不需要用單元測(cè)試去覆蓋。
--王輝
5.?re: 找了一天的jsp格式化工具,最后還是用回workshop
傻逼
--2
閱讀排行榜
1.?一個(gè)新java web項(xiàng)目入手過程總結(jié)(8500)
2.?一個(gè)以前沒有注意的問題:java構(gòu)造函數(shù)的執(zhí)行順序(8198)
3.?找了一天的jsp格式化工具,最后還是用回workshop(7383)
4.?dwr reverse-ajax 實(shí)例解析(6605)
5.?Spring+hibernate 單元測(cè)試框架總結(jié)(6240)
評(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
主站蜘蛛池模板:
99re热精品视频国产免费
|
巨胸喷奶水www永久免费
|
午夜亚洲WWW湿好爽
|
无码国产精品一区二区免费
|
久久精品亚洲综合一品
|
www成人免费观看网站
|
亚洲精品高清在线
|
羞羞漫画登录页面免费
|
全亚洲最新黄色特级网站
|
99久久99热精品免费观看国产
|
婷婷精品国产亚洲AV麻豆不片
|
久久久久国产精品免费免费不卡
|
婷婷久久久亚洲欧洲日产国码AV
|
午夜老司机永久免费看片
|
亚洲精品中文字幕无码AV
|
精品久久久久久久久免费影院
|
日本亚洲免费无线码
|
又粗又硬又大又爽免费视频播放
|
一级毛片a免费播放王色
|
亚洲日本中文字幕区
|
久久国产免费福利永久
|
在线观看免费亚洲
|
国产偷国产偷亚洲清高动态图
|
无码国产精品一区二区免费模式
|
一本色道久久综合亚洲精品蜜桃冫
|
嫩草在线视频www免费观看
|
亚洲国产精品综合久久网各
|
成人黄页网站免费观看大全
|
一级全免费视频播放
|
亚洲成a人片在线观看中文!!!
|
永久看日本大片免费35分钟
|
春暖花开亚洲性无区一区二区
|
午夜影视日本亚洲欧洲精品一区
|
毛片免费全部免费观看
|
国产综合免费精品久久久
|
亚洲欧美自偷自拍另类视
|
亚洲大香人伊一本线
|
国产亚洲精品资源在线26u
|
日韩伦理片电影在线免费观看
|
99精品在线免费观看
|
久久久久久久久久免免费精品
|