日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
JBossSeam框架下的單元測試

想寫這篇文章很久了,因?yàn)?Seam 下的單元測試一直存在一些配置方面的問題,而且 Seam 框架提倡最多的是整合測試。所以關(guān)于單元測試,無論是 Seam 的參考手冊(cè)還是其他參考書(Seam In Action, etc.)里都沒有詳細(xì)介紹和例子??偹苤?,單元測試是保證質(zhì)量或 TDD 必不可少的部分,對(duì)項(xiàng)目的重要性不言而喻。本文以實(shí)例說明了 Seam 的單元測試如何進(jìn)行,有不對(duì)之處請(qǐng)大家指出 :-)

10年積累的做網(wǎng)站、網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有高昌免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

一. Seam 下的單元測試的難點(diǎn)與問題

1. Seam 框架依賴于容器環(huán)境

不只是 Seam,現(xiàn)在的 Web 框架很少有可以在純 JavaSE 環(huán)境中可運(yùn)行的,所以脫離了容器環(huán)境,框架是不能運(yùn)行的,其實(shí)也是沒有意義的。只要涉及到了容器,就會(huì)帶來很多的問題,而且因?yàn)槿萜鞯牟煌?,問題錯(cuò)綜復(fù)雜。

2. 容器內(nèi) / 容器外測試的復(fù)雜度

這里說的容器內(nèi)測試就是在部署應(yīng)用后在容器的環(huán)境里拿到應(yīng)用的上下文,也就是在應(yīng)用運(yùn)行時(shí)在同一環(huán)境(容器內(nèi))拿到待測實(shí)例并進(jìn)行測試。換句話說,測試用例與實(shí)現(xiàn)都是運(yùn)行在容器的環(huán)境里。而容器外測試則是測試環(huán)境通過遠(yuǎn)程訪問容器,拿到容器內(nèi)的 Remote Seam Components / Remote EJB Session Beans 實(shí)例,從而在容器外的測試環(huán)境下進(jìn)行測試。

3. JBoss 社區(qū)產(chǎn)品的整體性

Seam 是 JBoss 的,jBPM 是 JBoss 的,等等 Seam 相關(guān)的依賴環(huán)境都是 JBoss 的。所以,容器不是 JBoss 的的話,兩個(gè)字:麻煩。雖然現(xiàn)在的 Seam(ver 2.1.1) 在文檔 / 示例中說明了如何在非 JBoss AS 中配置與使用 Seam,但據(jù)筆者目前的嘗試,要想順利使用 Seam 的 Advanced 功能,JBoss AS / HIbernate 不用都不行。這也要求了要做 Seam 的單元測試,就必須對(duì)很多 JBoss 產(chǎn)品有一定的了解。

二. 解決問題

歸根結(jié)底,Seam 下的單元測試只所以不好做,還是難在了配置上。要配置好一個(gè)‘類容器’的環(huán)境才能讓 Seam 跑起來。

1. 搭建‘類容器’環(huán)境

從配置上來說,我們首先要搭建一個(gè)容器環(huán)境。把下載下來的 Seam 解壓,把 bootstrap 里面找到 conf 與 deploy 這兩個(gè)目錄并 copy 到測試環(huán)境目錄下。在測試環(huán)境目錄下建立 WEB-INF 目錄,并把 Seam 的核心配置文件 components.xml 放置到這里,還有 JSF、Web 部署描述符等需要的都放置到 WEB-INF 目錄里。

2. 在測試用例中拿到待測 Seam 組件實(shí)例

從代碼上來說,拿到待測組件實(shí)例是關(guān)鍵。在測試代碼中,可以通過 org.jboss.seam.Component.getInstance() 方法從 Seam 框架中獲取需要的組件實(shí)例,這是單元測試能否成功的關(guān)鍵。

3. 初始化 Seam 框架

在測試代碼中需要手動(dòng)初始化 Seam 框架與應(yīng)用,測試結(jié)束后也同樣需要手動(dòng)結(jié)束框架與應(yīng)用,其都是通過 org.jboss.seam.context.Lifecycle 進(jìn)行操作的。

4. 測試框架的選擇

這不是相對(duì)于 Seam 單元測試的關(guān)鍵問題,但是,恰但地選擇測試框架對(duì)于項(xiàng)目而言是很重要的??偹苤?,目前最常用的兩個(gè)測試框架 JUnit 與 TestNG 各有千秋,這里我簡單總結(jié)一下:

JUnit:適合小型項(xiàng)目,對(duì)于簡單的單元測試可以很好的發(fā)揮其‘小而強(qiáng)大’的優(yōu)勢,主流 IDE 都有其功能或插件。但要進(jìn)行整合測試(集成界面)就困難了。

TestNG:適合任何項(xiàng)目,IDE 支持不是很好,但是 JUnit 能做的它都能做,而且更細(xì)致,適用場景更廣泛。

三. 示例

筆者是用 NetBeans IDE 與 Maven 搭建的項(xiàng)目,Seam 下的單元測試的具體配置和示例代碼片斷如下:

初始化:

if (!Lifecycle.isApplicationInitialized()) {

Lifecycle.beginApplication(new HashMap ());

new Initialization(new MockServletContext()).create().init();

Lifecycle.beginCall();

}

獲取待測組件實(shí)例:

processDefTransformer = (ProcessDefTransformService) Component.

getInstance(ProcessDefTransformer.class);

assertNotNull(processDefTransformer);

結(jié)束:

Lifecycle.endApplication();

四. 總結(jié)

本文筆者總結(jié)了 Seam 下單元測試的難點(diǎn)與問題,也提出了一種解決方案。隨著 Seam 框架的日漸穩(wěn)定與成熟,以及 WebBeans 規(guī)范的發(fā)布,相信 Java Web,Java EE 將迎來一個(gè)嶄新的時(shí)代!

您正在閱讀的是: JBoss Seam框架下的單元測試


分享標(biāo)題:JBossSeam框架下的單元測試
文章URL:http://m.5511xx.com/article/cdisshh.html