Ant+Junit+Log4J+CVS进行XP模式开发的建立
2008-01-05 19:39:29 来源:WEB开发网核心提示:Ant+Junit+Log4J+CVS进行XP模式开发的建立 作者(100101)北京信息工程学院 蔡君一、 综述软件行业的发展几乎进入到了疯狂的地步,各种各样的软件蜂拥市场,Ant+Junit+Log4J+CVS进行XP模式开发的建立,而软件的开发模式也是在不断的改变的,推出了许多的设计模式供大家使用,还没有整理,我
Ant+Junit+Log4J+CVS进行XP模式开发的建立
作者(100101)北京信息工程学院 蔡君
一、 综述
软件行业的发展几乎进入到了疯狂的地步,各种各样的软件蜂拥市场,而软件的开发模式也是在不断的改变的,推出了许多的设计模式供大家使用,我在这里介绍得就是基于XP模式的开发。XP也叫做极限编程。他给人提供了一种全新的开发软件的模式,或许您还没有使用,或许您在使用,但是没有具体到实施。本文向您介绍了基于许多免费软件的XP模式增量开发环境的建立。
二、 软件下载
1. Ant
Ant是一个基于java的build工具。大家都知道,现在已经有了许多的build工具,例如make、gnumake、nmake、jam等,而且这些工具都非常优秀。那我为什么还要给大家介绍Ant这个新工具呢? 因为Ant是一个跨平台的Build工具。之所以Ant能跨平台,是因为Ant不再需要你编写shell命令,Ant的配置文件是基于xml的任务树,能让你运行各种各样的任务,任务的运行是由实现了特定任务接口的对象来完成的。
下载地址:http://jakarta.apache.org/builds/jakarta-ant/release/
2. Junit
随着Refactoring技术和XP软件工程技术的广泛推广,单元测试的作用在软件工程中变得越来越重要,而一个简明易学、适用广泛、高效稳定的单元测试框架则对成功的实施单元测试有着至关重要的作用。在java编程语句环境里,Junit Framework是一个已经被多数java程序员采用和实证的优秀的测试框架.
下载地址:http://www.junit.org
3. Log4J
Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感爱好的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
下载地址:http://jakarta.apache.org/log4j/jakarta-log4j-1.2.8.zip
4. Jdom
Java + XML = JDOM !
这就是JDOM设计者的目标。假如你曾经使用过烦人的SAX或是DOM来处理XML,你就会知道为什么要有JDOM或者是JAXB。在今年(2002)的JavaOne会议上JDOM的主要创始人Jason Hunter有一篇出色的演讲介绍了JDOM技术,题目就是JDOM Makes XML Easy。
在那篇文档里,JDOM被拿来与DOM比较,而我更愿意拿它同JAXB比较。因为JAXB和JDOM都是为了在Java中提供比DOM和SAX更为方便的XML处理接口而开发的,并且通过完全不同的途径来解决这个问题。JDOM的处理方式是与DOM类似的树操作。而JAXB通过DTD和绑定模式来生成访问XML文档的Java代码,将XML映射成了Java对象来操作
下载地址:http://www.jdom.org/downloads/index.Html
三、 环境的建立
把以上文件下载之后解压缩之后,设定您的JAVA_HOME,以及ANT_HOME之后,在DOS环境下键入ant,假如出现了如下情况
Buildfile: build.xml does not exist!
Build failed
证实了您的ANT环境已经搭建成功了。还需要注重的就是您假如需要JUNIT的任务,那么您需要将Junit.jar拷贝到ANT_HOME/lib目录下面。
四、 程序的实现
在XP中提倡先建立测试单元。那么我们想建立一个读XML的,程序的话,我们需要建立一个Case,ReadXMLCase.java
package test;import xml.ReadXML;import junit.framework.*;/** * Title: 阿菜Java技术站 * Description: * Copyright: Copyright (c) 2003 * Company: <a href="http://www.ejb.cn"target="_blank">www.ejb.cn</a> * @author: acai * @version 1.0 */public class ReadXMLCase extends TestCase { /** * ConstrUCtor for ReadXMLCase. */ public ReadXMLCase() { super(); } /** * Constructor for ReadXMLCase. * @param arg0 */ public ReadXMLCase(String arg0) { super(arg0); } public void testPRintXML() { ReadXML rx = new ReadXML("E:/workspace/graduationDesigner/web.xml"); rx.printXML(); } public static void main(String args[]) { junit.textui.TestRunner.run(new TestSuite(ReadXMLCase.class)); }}
此编译是不能够通过,还需要我们编写ReadXML.java
package xml;import org.apache.log4j.Logger;import org.apache.log4j.BasicConfigurator;import org.apache.log4j.NDC;import org.jdom.*;import org.jdom.input.*;import org.jdom.output.*;import java.io.*;/** * Title: 阿菜Java技术站 * Description: * Copyright: Copyright (c) 2003 * Company: <a href="http://www.ejb.cn"target="_blank">www.ejb.cn</a> * @author: acai * @version 1.0 */public class ReadXML { static Logger log = Logger.getLogger(ReadXML.class.getName()); private String fileName = null; private SAXBuilder builder = null; /** * Constructor for ReadXML. */ public ReadXML(String fileName) { super(); BasicConfigurator.configure(); this.fileName = fileName; builder = new SAXBuilder(); } public void printXML() { try { log.info("开始创建Document"); Document doc = builder.build(new File(fileName)); XMLOutputter outputter = new XMLOutputter(); log.info("开始输出XML内容:"); outputter.output(doc, System.out); log.info("输出结束!"); } catch (Exception e) { e.printStackTrace(); } }}
编写Build.XML文件
<project name="acaiDesigner" default="junit"basedir="."> <!-- App name-dependent settings. --> <property name="appname" value="acaiDesigner"/> <property name="src" value="${basedir}/src"/> <property name="build.classesdir" value="${basedir}/bin"/> <path id="classpath"> <pathelement path="${classpath}:${build.classesdir}" /> <fileset dir="${basedir}/lib"> <include name="*.jar" /> </fileset> </path> <target name="compile"> <javac srcdir="${src}" destdir="${build.classesdir}"> <classpath refid="classpath"/> </javac> </target> <target name="junit" depends="compile"><junit printsummary="yes" fork="yes"haltonfailure="yes"> <classpath refid="classpath"/> <formatter type="plain"/> <test name="test.ReadXMLCase" /></junit></target></project>
在DOS下面运行ant,ok就可以自动编译和单元测试了,假如编译错误,会打印出来相对应的错误信息。假如您进行了单元测试的话,您可以在您的目录下面看到这样的一个文件TEST-test.ReadXMLCase.txt,这个文件里面具体记载了本次单元测试的经过。并且在里面可以看到Log4J打印的结果。
五、 结束语
XP模式强调的是一种单元测试,他们要求的测试代码比自己的源程序代码还要多,这也是建立一个强大系统的根源吧,短暂的接受了XP模式,发现他带给我的不仅仅是一种新的思想,而且他带给我更好、更快的软件开发。而且这种方式让我很轻易排除我程序的错误,不要到客户面前让我不敢肯定说出我得软件,他让我有信心说,这个经过测试的。仅仅是短暂的接受而已,没有深入的研究,错误在所难免,希望大家能够多多交流。我的邮箱:webmaster@justhis.com 网站 http://ejb.cn
六、 参考资源:
N多,还没有整理。我在Google.com上搜索的,可以说互联网赋予了我得一切(除美女^_^)。
更多精彩
赞助商链接