Java中自动化集成

原创 2004年06月28日 22:48:00

Java中自动化集成

JavaYangJoke 2004.06.28

概述

       项目从开始到结束都离不开重复各种步骤以达到单元测试、集成测试,特别是NNweb应用程序中,下面我是在Java web程序开发中持续集成的一点点。

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

1、  ANThttp://ant.apache.org/

Ant apache 中的一个开源项目,是一个相当简单的Build工具。

l         安装

n         http://ant.apache.org/bindownload.cgi下载

n         解压下载后的文件,在操作系统中设置环境变量(ANT_HOME=${ANT_HOME}

n         并在path中加入PATH=PATH;ANT_HOME/bin

l         使用

n         写一个build.xml文件(见下面)

n         CMD窗口中运行ant –f  build.xml

 

一个简单的Build.xml文件

<?xml version="1.0" encoding="ISO-8859-1"?>

<?xml version="1.0" encoding="ISO-8859-1"?>

<!—default为默认执行的任务à

<project name="project name" default=" ftp_task" basedir=".">

<property name="ant.home " value="/usr/lib" />

<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->

<!--Define a ftp task! Use NetComponents.jar                        -->

<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->

 

<!—自定义任务-->

       <target name="defineTasks" depends="properties">

         <taskdef name="ftp"

classname="org.apache.tools.ant.taskdefs.optional.net.FTP"             classpath="${ ant.home }/optional.jar:${ ant.home }/ NetComponents.jar "

 />

       </target>

 

<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->

<!-- Put files to the ftp Server                         -->

<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->

<!—执行任务-->

 

       <target name="ftp_task" depends="defineTasks"  description="--> makes a complete hyaq release">

              <ftp action="put"

                 server="server ip"

                 userid="user name"

                 password="password"

port="9997"

                 >  

                     <fileset dir="${dir}">

                             <include name="file.war"/>

                      </fileset>

              </ftp>

       </target>      

</project>

 

2、  XDoclethttp://xdoclet.sourceforge.net/xdoclet/index.html

Xdoclet也是sourceforge中一个开源项目,它主要用在生成描述文件,他包括好多个流得框架配置文件的生成。在写代码就可以直接写出文件的相关描述信息,也可以先把各种类型的配置信息单独放在一个文件里,最后由Xdoclet生成。使用时也可以用它自定义的ANT功能,也可以用命令行的方式。

 

一个简单的例子

 

java:

 

package com.alt.gzcx.action;

 

import javax.servlet.ServletConfig;

import javax.servlet.ServletException;

import javax.servlet.http.HttpSession;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/** 

*     @web.servlet

*            name="FileDownloadAction"

*            display-name="File Download Action"

*            description="File Download Action"

*            load-on-startup="1"

*

*     @web.servlet-mapping

*            url-pattern="file/FileDownloadAction"

*/

 

public class FileDownloadAction extends HttpServlet {

       public void init(ServletConfig config)

              throws ServletException{

       }

       public void service(HttpServletRequest request, HttpServletResponse response)

              throws ServletException, java.io.IOException {

       }

}

 

 

<?xml version="1.0" encoding="ISO-8859-1"?>

 

<project name="Gzcx" default="webdoclet" basedir=".">

       <property name="gzcx.root.dir" value="f:/gzcx"/>

       <property name="java.dir" value="${gzcx.root.dir}/src"/>

       <property name="dest.dir" value="${gzcx.root.dir}/dest"/>

       <property name="web.dir" value="${gzcx.root.dir}/webapps/gzcx"/>

       <property name="web.web-inf.dir" value="${gzcx.root.dir}/webapps/gzcx/WEB-INF"/>

       <property name="web.lib.dir" value="f:/resin/lib"/>

       <property name="xdoclet.lib.dir" value="F:/study/xdoclet/xdoclet-1.2.1/lib"/>

 

   

       <!-- Define the class path                                               -->

  

       <path id="class.path">

              <fileset dir="${web.lib.dir}">

                     <include name="*.jar"/>

              </fileset>

              <fileset dir="${xdoclet.lib.dir}">

                     <include name="*.jar"/>

              </fileset>

       </path>         

      

    

       <!-- Initialise                                                          -->

  

       <target name="init">

              <tstamp>

                     <format property="TODAY" pattern="d-MM-yy"/>

              </tstamp>

              <taskdef

                     name="xdoclet"

                     classname="xdoclet.DocletTask"

                     classpathref="class.path"

                     />

              <taskdef

                     name="ejbdoclet"

                     classname="xdoclet.modules.ejb.EjbDocletTask"

                     classpathref="class.path"

                     />

              <taskdef

                     name="webdoclet"

                     classname="xdoclet.modules.web.WebDocletTask"

                     classpathref="class.path"

                     />

              <taskdef

                     name="jmxdoclet"

                     classname="xdoclet.modules.jmx.JMXDocletTask"

                     classpathref="class.path"

                     />

              <taskdef

                     name="jdodoclet"

                     classname="xdoclet.modules.jdo.JdoDocletTask"

                     classpathref="class.path"

                     />

              <taskdef

                     name="hibernatedoclet"

                     classname="xdoclet.modules.hibernate.HibernateDocletTask"

                     classpathref="class.path"

                     />

       </target>

      

       <target name="generate"

        description="Generates Hibernate class descriptor files."

        depends="init">

 

           <!-- Execute the hibernatedoclet task -->

           <hibernatedoclet

               destdir="${web.web-inf.dir}/classes"

            mergedir="${web.web-inf.dir}/classes"

               >

          

               <fileset dir="${java.dir}">

                   <include name="**/*Bean.java"/>

               </fileset>

          

               <hibernate/>

          

           </hibernatedoclet>

      

           <!-- Upgrade grammar from Hibernate1 to Hibernate2 -->

           <replace dir="${web.web-inf.dir}/classes">

               <include name="**/hibernate/*.hbm.xml"/>

               <replacefilter token="readonly=" value="inverse="/>

               <replacefilter token="role=" value="name="/>

               <replacefilter token="hibernate-mapping.dtd" value="hibernate-mapping-2.0.dtd"/>

           </replace>

       </target>

 

       <!-- Invoke XDoclet's webdoclet                                          -->

    

       <target name="webdoclet" depends="init">

             

              <echo>+---------------------------------------------------+</echo>

              <echo>|                                                   |</echo>

              <echo>| R U N N I N G   W E B D O C L E T                 |</echo>

              <echo>|                                                   |</echo>

              <echo>+---------------------------------------------------+</echo>

             

              <webdoclet

                     destdir="${dest.dir}"

                     mergedir="parent-fake-to-debug"

                     excludedtags="@version,@author,@todo"

                     addedtags="@xdoclet-generated at ${TODAY},@copyright The XDoclet Team,@author XDoclet,@version ${version}"

                     force="false"

                     verbose="false"

                     >

                    

                     <fileset dir="${java.dir}">

                            <include name="**/*Servlet.java"/>

                            <include name="**/*Filter.java"/>

                            <include name="**/*Tag.java"/>

                            <include name="**/*Action.java"/>

                     </fileset>

                    

                     <deploymentdescriptor

                            servletspec="2.3"

                            destdir="${web.web-inf.dir}"

                            >

                           

                     </deploymentdescriptor>

                    

              </webdoclet>

       </target>

      

</project>

 

ant –f xdoclet.xml就可以生成了。

 

 

 

 

Maven实战(五)自动化Web应用集成测试

自动化集成测试的角色 本专栏的上一篇文章讲述了Maven与持续集成的一些关系及具体实践,我们都知道,自动化测试是持续集成必不可少的一部分,基本上,没有自动化测试的持续集成,都很难称之为真正的持续...
  • wangmuming
  • wangmuming
  • 2015年07月16日 17:51
  • 1367

手机APP自动化持续集成方案

自动化测试流程、自动化测试框架
  • hexieshangwang
  • hexieshangwang
  • 2015年08月01日 22:31
  • 431206

持续集成与测试自动化

一、背景 我从毕业到现在, 曾在大小不同的三个公司就职: 有民营的、有外资的、也有上市公司。 但以前大多都是做项目,从事软件开发工作,绝大部分公司对测试都不重视,即使有也没有成规模, 更谈不上建...
  • yunbin_7
  • yunbin_7
  • 2013年12月02日 19:15
  • 2142

CI(Continue Integrate)自动化持续集成和发布

引言     在App项目中频繁的发布版本可能是一件比较头疼的问题。经常会有客户追着PM要版本,PM追着测试要版本,测试又去追着开发要版本的情况,要是哪天赶上开发跑肚拉稀,生病住院,那整...
  • lobee
  • lobee
  • 2017年04月05日 15:39
  • 971

自动化测试与持续集成方案--接口测试

有人在上一个帖子中问,为什么要把接口测试排在最前面。 原因很简单,接口是先行的,接口没做好,后面的编码工作受限,拿不到数据。 传统接口测试 接口自动化测试 接口自动化的持续集成 探...
  • wanglha
  • wanglha
  • 2015年05月27日 09:38
  • 2735

持续集成(CI)、自动化构建和自动化测试--初探

此文章是为了总结前一段时间由于Maven2的学习而引起的一个持续集成的学习。 一、什么是持续集成(Continuous Integration)?      这个概念到底是怎么定义,说实话很多不同...
  • cnbird2008
  • cnbird2008
  • 2013年04月01日 09:27
  • 18031

Web自动化测试之WebDriver 博客分类: Java

Web自动化测试之WebDriver 博客分类: Java Web单元测试JavaScriptChrome浏览器  对Web进行自动化测试,我们首先想象一个简单的场景,来看看需要测试哪些东西:...
  • xiahouyang2010
  • xiahouyang2010
  • 2014年02月28日 15:59
  • 1243

持续集成之“自动化部署”

持续集成之“自动化部署” 转自:http://www.infoq.com/cn/news/2011/07/ci-automatic-deployment   在前文《依赖管理》中,我...
  • shifancc
  • shifancc
  • 2014年11月20日 15:22
  • 614

Java开发流程自动化(svn+maven+nexus+jenkins) --自动编译,持续集成,测试,打包,发布/部署

Java开发中,很多工作比较繁琐:新功能开发完毕,测试,修改配置文件,打包,发布…我们时常能听到将开发流程自动化的声音,然而实际真正将自动化落地的有多少呢,你还在一遍遍的用IDE打包,然后手工部署吗,...
  • pzoozq
  • pzoozq
  • 2016年03月20日 02:53
  • 3336

加速Java应用开发速度3——单元/集成测试+CI

加速Java应用开发速度3——单元/集成测试+CI
  • swebin
  • swebin
  • 2017年03月03日 18:03
  • 346
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java中自动化集成
举报原因:
原因补充:

(最多只允许输入30个字)