[原創(chuàng)]基于驗(yàn)證框架的action的測(cè)試

          當(dāng)引用了驗(yàn)證框架的時(shí)候,測(cè)試 action 的時(shí)候,程序會(huì)自動(dòng)去找驗(yàn)證框架進(jìn)行驗(yàn)證,那么如何進(jìn)行這種情況下的 action 測(cè)試呢?經(jīng)過(guò)一天的研究,發(fā)現(xiàn)必須先將驗(yàn)證所需要的 xml 文件夾在進(jìn)去,然后才能夠順利的進(jìn)行!具體的實(shí)施如下:

          ??? protected void setUp() throws Exception {

          ??????? super .setUp();

          ??????? // set WEB-INF directory

          ??????? setContextDirectory( new File( "WebContent" ));

          ??????? // set struts- test -config.xml

          ??????? setConfigFile( "/WEB-INF/test/struts-test-config.xml" );

          ???????

          ??????? // set request's attribute for test

          ??????? // 創(chuàng)建一個(gè) MessageResourcesFactory 類(lèi),目的是得到下面的 MessageResources, 作為其中的一個(gè)參數(shù)

          MessageResourcesFactory messageResourcesFactory = new PropertyMessageResourcesFactory();

          // 獲得 MessageResources

          MessageResources messageResources = new PropertyMessageResources(messageResourcesFactory, "org.apache.struts.action.ActionResources" );? ?
          ?
          getActionServlet().getServletContext().setAttribute( "org.apache.commons.validator.VALIDATOR_RESOURCES" ,getResources());

          ???????? ???????????????????????? ?
          getActionServlet().getServletContext().setAttribute( "org.apache.struts.action.MESSAGE" ,messageResources);

          ??? }

          ?

          以下的方法為了得到一個(gè) MessageResources ,是從 org.apache.struts.validator. ValidatorPlugIn 中的 initResources ()方法得到的!

          /**

          ? * get the validator resources.

          ? *

          ? * @throws IOException ????? if an input/output error is encountered

          ? * @throws ServletException if we cannot initialize these resources

          ? */

          protected ValidatorResources getResources() throws IOException, ServletException {

          String pathnames = "/WEB-INF/validator-rules.xml,/WEB-INF/test/struts-test-config.xml" ;

          ??????? StringTokenizer st = new StringTokenizer(pathnames, "," );

          ?

          ??????? List streamList = new ArrayList();

          ??????? try {

          ??????????? while (st.hasMoreTokens()) {

          ??????????????? String validatorRules = st.nextToken().trim();

          ??????????????? if (log.isInfoEnabled()) {

          ??????????????????? log.info( "Loading validation rules file from '" + validatorRules + "'" );

          ??????????????? }

          ?

          ??????????????? InputStream input =getActionServlet().getServletContext().getResourceAsStream(validatorRules);

          ???????????????

          ??????????????? // If the config isn't in the servlet context, try the class loader

          ??????????????? // which allows the config files to be stored in a jar

          ??????????????? if (input == null ) {

          ??????????????????? input = getClass().getResourceAsStream(validatorRules);

          ??????????????? }

          ?

          ??????????????? if (input != null ) {

          ??????????????????? BufferedInputStream bis = new BufferedInputStream(input);

          ??????????????????? streamList.add(bis);

          ??????????????? } else {

          ??????????????????? throw new ServletException( "Skipping validation rules file from '"

          ??????????????????????????? ? + validatorRules + "'.? No stream could be opened." );

          ??????????????? }

          ??????????? }

          ??????????? int streamSize = streamList.size();

          ??????????? InputStream[] streamArray = new InputStream[streamSize];

          ??????????? for ( int streamIndex = 0;streamIndex < streamSize;streamIndex++) {

          ??????????????? InputStream is = (InputStream) streamList.get(streamIndex);

          ??????????????? streamArray[streamIndex] = is;

          ??????????? }

          ?

          ??????????? return new ValidatorResources(streamArray);

          ??????? } catch (SAXException sex) {

          ??????????? log.error( "Skipping all validation" ,sex);

          ??????????? throw new ServletException(sex);

          ??????? } finally {

          ??????????? Iterator streamIterator = streamList.iterator();

          ??????????? while (streamIterator.hasNext()) {

          ??????????????? InputStream is = (InputStream) streamIterator.next();

          ??????????????? is.close();

          ??????????? }

          ??????? }

          ??? }

          ?

          通過(guò)這樣的配置以后,就可以正常的對(duì)于 action 進(jìn)行測(cè)試了!

          posted on 2006-03-17 13:31 扭轉(zhuǎn)乾坤 閱讀(259) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): 測(cè)試相關(guān)

          <2006年3月>
          2627281234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(2)

          隨筆分類(lèi)(31)

          隨筆檔案(30)

          文章分類(lèi)(32)

          文章檔案(33)

          相冊(cè)

          PHP小站-首頁(yè)

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 文登市| 柳河县| 洛宁县| 德格县| 两当县| 临洮县| 崇仁县| 鄯善县| 昔阳县| 四会市| 礼泉县| 游戏| 全南县| 晋宁县| 简阳市| 荔波县| 南川市| 烟台市| 庆云县| 兴安盟| 博野县| 大埔区| 新平| 重庆市| 曲水县| 云和县| 安康市| 利川市| 塘沽区| 桃源县| 萍乡市| 大同县| 平江县| 海晏县| 祁东县| 昭平县| 正定县| 沙河市| 奉新县| 怀化市| 雅安市|