Java/Ant/JUnit

Материал из Java эксперт
Перейти к: навигация, поиск

Call junit ui test with fork=true

   <source lang="java">

<?xml version="1.0"?> <project name="yourName" default="junitgui" basedir=".">

 <property name="junitJar" value="\junit3.8.1\junit.jar" />
 <property name="src.dir" value="${basedir}\src" />
 <property name="build.dir" value="${basedir}\classes" />
 <path id="classpath">
   <pathelement location="${junitJar}" />
   <pathelement location="${build.dir}" />
 </path>
 <target name="init">
   <mkdir dir="${build.dir}" />
 </target>
 <target name="build" depends="init" description="build all">
   <javac
       srcdir="${src.dir}" destdir="${build.dir}"
       source="1.5" 
       deprecation="on" debug="on" optimize="off" includes="**">
     <classpath refid="classpath" />
   </javac>
 </target>
 <target name="junitgui" depends="build" description="run junitgui">
   <java classname="junit.awtui.TestRunner" fork="yes">
     <arg value="sis.AllTests" />
     <classpath refid="classpath" />
   </java>
 </target>
  <target name="clean">  
   <delete dir="${build.dir}" />
 </target>
  <target name="rebuildAll" depends="clean,build" description="rebuild all"/>

</project>

 </source>
   
  
 
  



Junit report

   <source lang="java">

<?xml version="1.0"?> <project name="Demo ant junit" default="compile" basedir=".">

 <property name="dir.build" value="build"/>
 <property name="dir.src" value="src"/>
 <property environment="env"/>
 <path id="classpath.project">
   <pathelement path="${dir.build}"/>
 </path>
 <target name="install.junit">
   <fail unless="env.JUNIT_HOME">
     The JUNIT_HOME environment variable must be set.
   </fail>
   <available property="junit.already.installed"
              file="${ant.home}/lib/junit.jar"/>
   <copy file="${env.JUNIT_HOME}/junit.jar"
         todir="${ant.home}/lib"
         failonerror="true"/>
  
   <fail unless="junit.already.installed">
     junit.jar was not found in ANT_HOME/lib prior to this 
     build, so it was copied for you. Please try your build again.
   </fail>
 </target>
 <target name="prepare" depends="install.junit">
   <mkdir dir="${dir.build}"/>
 </target>
 <target name="clean"
         description="Remove all generated files.">
   <delete dir="${dir.build}"/>
 </target>
 <target name="compile" depends="prepare"
         description="Compile all source code.">
   <javac srcdir="${dir.src}" destdir="${dir.build}">
     <classpath refid="classpath.project"/>
   </javac>
 </target>
 <target name="junit1" depends="compile">
   <junit printsummary="on" 
          fork="false" 
          haltonfailure="false"
          failureproperty="tests.failed"
          showoutput="true">
     <classpath refid="classpath.project"/>
     <formatter type="brief" usefile="false"/>
     <batchtest>
       <fileset dir="${dir.src}">
         <include name="**/Test*.java"/>
         <exclude name="**/AllTests.java"/>
       </fileset>
     </batchtest>
   </junit>
   <fail if="tests.failed">
   *******************************************************
   *******************************************************
   One or more tests failed. Check the output...
   *******************************************************
   *******************************************************
   </fail>
 </target>
 <target name="junit2" depends="compile">
   
   <property name="testcase" 
             value="com/jexp/javaxp/junit/TestPerson"/>
   <junit fork="false">
     <classpath refid="classpath.project"/>
     <formatter type="plain" usefile="false"/>
     <test name="${testcase}"/>
   </junit>
 </target>
 <target name="junit3" depends="compile">
   <junit printsummary="on" fork="false" haltonfailure="false">
     <classpath refid="classpath.project"/>
     <formatter type="xml"/>
     <batchtest todir="${dir.build}">
       <fileset dir="${dir.src}">
         <include name="**/Test*.java"/>
         <exclude name="**/AllTests.java"/>
       </fileset>
     </batchtest>
   </junit>
   <junitreport todir="${dir.build}">
     <fileset dir="${dir.build}">
       <include name="TEST-*.xml"/>
     </fileset>
     <report format="frames" todir="${dir.build}"/>
   </junitreport>
   <pathconvert dirsep="/" property="reportUrl">
     <path>
       <pathelement location="${dir.build}/index.html"/>
     </path>
   </pathconvert>
   <exec executable="cmd" os="Windows XP">
     <arg value="/C"/>
     <arg value="${reportUrl}"/>
   </exec>
 </target>

</project>


 </source>
   
  
 
  



Junit test

   <source lang="java">

<?xml version="1.0"?> <project name="Demo ant junit" default="compile" basedir=".">

 <property name="dir.build" value="build"/>
 <property name="dir.src" value="src"/>
 <property environment="env"/>
 <path id="classpath.project">
   <pathelement path="${dir.build}"/>
 </path>
 <target name="install.junit">
   <fail unless="env.JUNIT_HOME">
     The JUNIT_HOME environment variable must be set.
   </fail>
   <available property="junit.already.installed"
              file="${ant.home}/lib/junit.jar"/>
   <copy file="${env.JUNIT_HOME}/junit.jar"
         todir="${ant.home}/lib"
         failonerror="true"/>
  
   <fail unless="junit.already.installed">
     junit.jar was not found in ANT_HOME/lib prior to this 
     build, so it was copied for you. Please try your build again.
   </fail>
 </target>
 <target name="prepare" depends="install.junit">
   <mkdir dir="${dir.build}"/>
 </target>
 <target name="clean"
         description="Remove all generated files.">
   <delete dir="${dir.build}"/>
 </target>
 <target name="compile" depends="prepare"
         description="Compile all source code.">
   <javac srcdir="${dir.src}" destdir="${dir.build}">
     <classpath refid="classpath.project"/>
   </javac>
 </target>
 <target name="junit1" depends="compile">
   <junit printsummary="on" 
          fork="false" 
          haltonfailure="false"
          failureproperty="tests.failed"
          showoutput="true">
     <classpath refid="classpath.project"/>
     <formatter type="brief" usefile="false"/>
     <batchtest>
       <fileset dir="${dir.src}">
         <include name="**/Test*.java"/>
         <exclude name="**/AllTests.java"/>
       </fileset>
     </batchtest>
   </junit>
   <fail if="tests.failed">
   *******************************************************
   *******************************************************
   One or more tests failed. Check the output...
   *******************************************************
   *******************************************************
   </fail>
 </target>
 <target name="junit2" depends="compile">
   
   <property name="testcase" 
             value="com/jexp/javaxp/junit/TestPerson"/>
   <junit fork="false">
     <classpath refid="classpath.project"/>
     <formatter type="plain" usefile="false"/>
     <test name="${testcase}"/>
   </junit>
 </target>
 <target name="junit3" depends="compile">
   <junit printsummary="on" fork="false" haltonfailure="false">
     <classpath refid="classpath.project"/>
     <formatter type="xml"/>
     <batchtest todir="${dir.build}">
       <fileset dir="${dir.src}">
         <include name="**/Test*.java"/>
         <exclude name="**/AllTests.java"/>
       </fileset>
     </batchtest>
   </junit>
   <junitreport todir="${dir.build}">
     <fileset dir="${dir.build}">
       <include name="TEST-*.xml"/>
     </fileset>
     <report format="frames" todir="${dir.build}"/>
   </junitreport>
   <pathconvert dirsep="/" property="reportUrl">
     <path>
       <pathelement location="${dir.build}/index.html"/>
     </path>
   </pathconvert>
   <exec executable="cmd" os="Windows XP">
     <arg value="/C"/>
     <arg value="${reportUrl}"/>
   </exec>
 </target>

</project>


 </source>
   
  
 
  



Prepare the test directories

   <source lang="java">

<?xml version="1.0"?> <project name="Example Application Build" default="build-both" basedir=".">

 <property file="build.properties"/>
 
 <property name="cvsroot" 
           value=":pserver:anoncvs@cvs.apache.org:/home/cvspublic" />
 
 <property name="mysql.cvsroot" 
           value=":pserver:anonymous@cvs.sourceforge.net:/cvsroot/mmmysql" />
 
  
 
 <path id="build.classpath">
   <pathelement location="${servlet24.jar}"/>
   <pathelement location="${jsp20.jar}"/>
   <pathelement location="${mysql.jar}"/>
   <pathelement path="${appName.jar}"/>
 </path>
 
  
 
 <path id="test.classpath">
   <path refid="build.classpath"/>
   <fileset dir="${httpunit.home}/jars">
     <include name="*.jar"/>
     <exclude name="junit.jar"/>
   </fileset>
   <pathelement location="${junit.jar}"/>
   <pathelement location="${httpunit.jar}"/>
   <pathelement location="${checkstyle.jar}"/>
   <pathelement location="${test.build}"/>
 </path>
 
  
 
 <fileset id="javadoc" dir="${src}">
   <exclude name="*/conf/**"/>
   <exclude name="*/docs/*"/>
   <include name="shared/**"/>
   <include name="stand-alone/**"/>
   <include name="web/java/**"/>
 </fileset>  
 
  
 
 
  
 
 <property name="docs.all.dir" value="${build}"/>
 
 <patternset id="docs.all">
   <include name="docs/**"/>
 </patternset>
 
 <property name="docs.misc.dir" value="${src}/shared/docs"/>
 
 <patternset id="docs.misc">
   <include name="README"/>
   <include name="LICENSE"/>
 </patternset>
 
 
 
 <property name="src.files.dir" value="."/>
 
 <patternset id="src.files">
   <include name="${src}/**"/>
   <include name="build.*"/>
 </patternset>
 
 
 
  
 <patternset id="bin.jar">
   <include name="*.jar"/>
 </patternset>
 
 
 
  
 <patternset id="bin.war">
   <include name="*.war"/>
 </patternset>
 
  
 
 
 <target name="dir" description="Create the working directories">
   <echo message="Creating the working directories"/>
   <mkdir dir="${build.stand-alone.root}"/>
   <mkdir dir="${build.web.classes}"/>
   <mkdir dir="${dist}"/>
   <mkdir dir="${lib}"/>
 </target>
 
 
 
 
 <target name="checkout-jstl" depends="dir" 
         description="Update or check out required sources
                      from CVS for the JSTL">
   <echo message="Checking out the required JSTL sources from CVS"/>
   <cvs cvsroot="${cvsroot}" quiet="true"
        command="checkout -P ${jstl.build}" 
        dest="${build}" compression="true" />
 </target>
 
 <target name="checkout-mysql-connector" depends="dir" 
         description="Update or check out required sources
         from CVS for the MySQL connector">
   <echo message="Checking out the required sources from CVS for the MySQL connector" />
   <cvs cvsroot="${mysql.cvsroot}" quiet="true"
        command="checkout" package="${mysql.build}"
        dest="${build}" compression="true" />
 </target>
 
 <target name="build-jstl" depends="checkout-jstl" 
         description="Build the JSTL from source">
   <echo message="Building the JSTL from source"/>
   <ant antfile="build.xml" dir="${build}/${jstl.build}"/>
   <copy todir="${lib}">
     <fileset dir="${build}/${jstl.build}/${build}/lib">
       <include name="*.jar"/>
     </fileset>
   </copy>
 </target>
 
 <target name="build-mysql-connector" depends="checkout-mysql-connector" 
         description="Build the MySQL connector from source">
   <echo message="Building the MySQL connector from source"/>
   
   
   <mkdir dir="${build}/dist-mysql-jdbc"/>
   <ant antfile="build.xml" dir="${build}/${mysql.build}"/>
   <copy tofile="${mysql.jar}">
     <fileset dir="${build}/build-mysql-jdbc">
       <include name="mysql-connector*/*.jar"/>
     </fileset>
   </copy>
 </target>



 <target name="compile-stand-alone" depends="dir" 
         description="Compile stand-alone application">
   <echo message="Compiling the stand-alone application"/>
   <javac srcdir="${src.shared.java}" destdir="${build.stand-alone.root}"/>
   <javac srcdir="${src.stand-alone.java}" 
          destdir="${build.stand-alone.root}"/>  
 </target>
 <target name="stand-alone-complete" 
         depends="build-mysql-connector, package-stand-alone" 
         description="Compile stand-alone application, 
                      using CVS version of the MySQL connector">
   <echo message="Compiling stand-alone application, using CVS versions of the MySQL connector"/>
 </target>
 
 <target name="package-stand-alone" depends="compile-stand-alone" 
         description="Package the stand-alone application">
   <echo message="Creating the stand-alone JAR file"/>
   <copy file="${database.properties}" todir="${build.stand-alone.root}"/>
   <jar destfile="${appName.jar}" basedir="${build.stand-alone.root}"/>
 </target>
 
 
 
 
 <target name="compile-web" depends="dir" description="Compile web application">
   <echo message="Compiling the web application"/>
   <javac destdir="${build.web.root}">
     <src path="${src.shared.java}"/>
   </javac>
   <javac srcdir="${src.web.java}" destdir="${build.web.root}">
     <classpath refid="build.classpath"/>
   </javac>
 </target>
 <target name="web-complete" 
         depends="build-mysql-connector, build-jstl, package-web" 
         description="Compile web application, 
                      using CVS versions of the MySQL connector and the JSTL">
   <echo message="Compiling web application, using CVS versions of the MySQL connector and the JSTL"/>
 </target>
 
 <target name="copy-web" depends="compile-web" description="Copy the web files">
   <echo message="Copying the web pages and configuration files"/>
   <copy todir="${build.web.root}">
     <fileset dir="${src.web.pages}"/>
   </copy>
   
   <copy todir="${build.web.tags}">
     <fileset dir="${src.web.tags}"/>
   </copy>
   <copy todir="${build.web.web-inf}">
     <fileset dir="${src.web.conf}">
       <include name="*.tld"/>
     </fileset>
   </copy>
   
   <copy todir="${build.web.lib}">
     <fileset dir="${lib}"/>
   </copy>
   
   <copy file="${database.properties}" todir="${build.web.classes}"/>
   
 </target>
 


 <target name="package-web" depends="compile-web" 
         description="Build the WAR file in one step">
   <echo message="Building the WAR file in one step"/> 
   <war destfile="${appName.war}" basedir="${src.web.pages}" 
        webxml="${src.web.conf}/web.xml">
     <lib dir="${lib}"/>
     <classes dir="${build.web.root}"/>
     <zipfileset dir="${src.web.tags}" prefix="WEB-INF/tags"/>
     <zipfileset file="${database.properties}" prefix="WEB-INF/classes"/>
     <zipfileset dir="${src.web.conf}" prefix="WEB-INF">
       <include name="*.tld"/>
     </zipfileset>
   </war>
 </target>
 
 
 
 <target name="build-both" 
         depends="package-stand-alone, package-web" 
         description="Compile both applications, 
                      without CVS versions of the MySQL connector and the JSTL">
   <echo message="Compiled both applications, without CVS versions of the MySQL connector and the JSTL"/>
 </target>
 <target name="build-all" 
         depends="stand-alone-complete, web-complete" 
         description="Compile both applications, 
                      using CVS versions of the MySQL connector and the JSTL">
   <echo message="Compiled both applications, using CVS versions of the MySQL connector and the JSTL"/>
 </target>




 <target name="download-servlet-jar" depends="dir" 
         description="Download the servlet JAR">
   <echo message="Downloading the servlet JAR"/>
   <get src="http://www.ibiblio.org/maven/servletapi/jars/servletapi-2.4.jar"
        dest="${servlet24.jar}"
        verbose="true"/>
 </target>
 
 
 
 
 
 <target name="download-jsp-jar" depends="dir" 
         description="Download the JSP JAR">
   <echo message="Downloading the JSP JAR"/>
   <get src="http://www.ibiblio.org/maven/jspapi/jars/jsp-api-2.0.jar"
        dest="${jsp20.jar}"
        verbose="true"/>
 </target>
 
 
 
 
 <target name="check-docs" 
         description="Check that the documentation is up to date">
   <echo message="Checking that the documentation is up to date"/>
   <condition property="docs.notRequired">
     <and>
       <uptodate targetfile="${dist}/${appName}-${package.docs}.zip">
         <srcfiles dir="${src}" includes="**"/>
       </uptodate>
       <uptodate targetfile="${dist}/${appName}-${package.docs}.tar.gz">
         <srcfiles dir="${src}" includes="**"/>
       </uptodate>
     </and>
   </condition>
 </target>  
 
 <target name="javadocs" depends="dir,check-docs" 
         description="Generate Javadocs for the application" 
         unless="docs.notRequired">
   <echo message="Generating Javadocs for the application"/>
   <javadoc destdir="${docs}/api" windowtitle="${javadoc.windowtitle}">
     <fileset refid="javadoc"/>
     <doctitle>
       ${javadoc.doctitle}
     </doctitle>
     <classpath refid="build.classpath"/>
     <link href="http://java.sun.ru/j2se/${javadoc.j2se.version}/docs/api"/>  
     <link href="http://java.sun.ru/j2ee/${javadoc.j2ee.version}/docs/api"/> 
   </javadoc>
 </target>
  
 <target name="javadocs-offline" depends="dir,check-docs"
         description="Generate Javadocs for the application, 
                      using offline package-list files"
         unless="docs.notRequired">
   <echo message="Generating Javadocs for the application, 
                  using offline package-list files"/>
   <javadoc destdir="${docs}/api" windowtitle="${javadoc.windowtitle}">
     <fileset refid="javadoc"/>
     <doctitle>
       ${javadoc.doctitle}
     </doctitle>
     <classpath refid="build.classpath"/>
     <link href="${javadoc.j2se.offline}" resolveLink="true"/>  
     <link href="${javadoc.j2ee.offline}" resolveLink="true"/> 
   </javadoc>
 </target>
 
 <target name="docs" depends="javadocs" 
         description="Assemble the documentation" unless="docs.notRequired">
   <echo message="Assembling the documentation"/>
   <copy todir="${docs}">
     <fileset dir="${src.shared.docs}">
       <include name="*.html"/>
     </fileset>
   </copy>
   <copy todir="${docs}/stand-alone">
     <fileset dir="${src.stand-alone.docs}">
       <include name="*.html"/>
     </fileset>
   </copy>
   <copy todir="${docs}/web">
     <fileset dir="${src.web.docs}">
       <include name="*.html"/>
     </fileset>
   </copy>
 </target>
 
 
 
 
 <target name="generate-hashes" description="Generate the hashes for a package">
   <echo message="Generating the hashes for ${file}"/>
   <checksum file="${dist}/${file}" forceOverwrite="true"/>
   <checksum file="${dist}/${file}" forceOverwrite="true" algorithm="SHA1"/>
   
   <delete failonerror="false">
     <fileset dir="." includes="**/${file}.asc"/>
   </delete>
   
   <exec executable="pgp" spawn="false" vmlauncher="false">
     <arg value="+force"/>
     <arg value="+batchmode"/>
     <arg value="-s"/>
     <arg value="-b"/>
     <arg value="-o"/>
     <arg value="${build}/${file}.asc"/>
     <arg value="-z"/>
     <arg value="${pgp.password}"/>
     <arg value="${dist}/${file}"/>
   </exec>
   
   <copy file="${build}/${file}.asc" todir="${dist}" failonerror="false"/>
 </target>
 
 <target name="zip-docs" depends="docs" description="Zip the documentation">
   <echo message="Zipping the documentation"/>
   <zip destfile="${dist}/${appName}-${package.docs}.zip">
     
     <fileset dir="${docs.all.dir}">
       <patternset refid="docs.all"/>
     </fileset>
     
     <fileset dir="${docs.misc.dir}">
       <patternset refid="docs.misc"/>
     </fileset>
   </zip> 
   <antcall target="generate-hashes">
     <param name="file" value="${appName}-${package.docs}.zip"/>
   </antcall>
 </target>
 
 <target name="zip-src" depends="zip-docs" 
         description="Zip the source and documentation together">
   <echo message="Zipping the source and documentation together"/>
   <zip destfile="${dist}/${appName}-src.zip">
     
     <zipfileset src="${dist}/${appName}-${package.docs}.zip"/>
     <fileset dir="${src.files.dir}">
       <patternset refid="src.files"/>
     </fileset>
   </zip> 
   <checksum file="${dist}/${appName}-src.zip" forceOverwrite="true"/>
   <checksum file="${dist}/${appName}-src.zip" forceOverwrite="true" 
             algorithm="SHA1"/>
 </target>
 
 <target name="zip-bin-stand-alone" depends="package-stand-alone,zip-docs" 
         description="Zip the binary stand-alone distribution 
                      with the documentation">
   <echo message="Zipping the binary stand-alone distribution with the documentation"/>
   <zip destfile="${dist}/${appName}-${package.stand-alone}-bin.zip">
     
     <zipfileset src="${dist}/${appName}-${package.docs}.zip"/>
     
     <zipfileset dir="${dist}" prefix="lib">
       <patternset refid="bin.jar"/>
     </zipfileset>
     <fileset dir=".">
       <include name="${mysql.jar}"/>
     </fileset>
   </zip> 
   <checksum file="${dist}/${appName}-${package.stand-alone}-bin.zip" 
             forceOverwrite="true"/>
   <checksum file="${dist}/${appName}-${package.stand-alone}-bin.zip" 
             forceOverwrite="true" algorithm="SHA1"/>
 </target>
 
 <target name="zip-bin-web" depends="package-web,zip-docs" 
         description="Zip the binary web distribution with the documentation">
   <echo message="Zipping the binary web distribution with the documentation"/>
   <zip destfile="${dist}/${appName}-${package.web}-bin.zip">
     
     <zipfileset src="${dist}/${appName}-${package.docs}.zip"/>
     
     <fileset dir="${dist}">
       <patternset refid="bin.war"/>
     </fileset>
   </zip> 
   <checksum file="${dist}/${appName}-${package.web}-bin.zip" 
             forceOverwrite="true"/>
   <checksum file="${dist}/${appName}-${package.web}-bin.zip" 
             forceOverwrite="true" algorithm="SHA1"/>
 </target>
 
 <target name="zip-bin" depends="zip-bin-stand-alone,zip-bin-web" 
         description="Zip the binary distribution with the documentation">
   <echo message="Zipping the binary distribution with the documentation"/>
   <zip destfile="${dist}/${appName}-bin.zip" 
        duplicate="preserve" update="true">
     <zipgroupfileset dir="${dist}" includes="*.zip"/>
   </zip>
   <checksum file="${dist}/${appName}-bin.zip" forceOverwrite="true"/>
   <checksum file="${dist}/${appName}-bin.zip" forceOverwrite="true" 
             algorithm="SHA1"/>
 </target>
 
 <target name="zip-all" depends="zip-src,zip-bin" 
         description="Zip the binary and source distributions">
   <echo message="Zipped the binary and source distributions"/>
 </target>
 
 
 
 
 <target name="tar-docs" depends="docs" description="Tar the documentation">
   <echo message="Tarring the documentation"/>
   <tar destfile="${dist}/${appName}-${package.docs}.tar.gz" compression="gzip">
     
     <tarfileset dir="${docs.all.dir}">
       <patternset refid="docs.all"/>
     </tarfileset>
     
     <tarfileset dir="${docs.misc.dir}">
       <patternset refid="docs.misc"/>
     </tarfileset>
   </tar> 
   <checksum file="${dist}/${appName}-${package.docs}.tar.gz" 
             forceOverwrite="true"/>
   <checksum file="${dist}/${appName}-${package.docs}.tar.gz" 
             forceOverwrite="true" algorithm="SHA1"/>
 </target>
 
 <target name="tar-src" depends="tar-docs"
         description="Tar the documentation">
   <echo message="Tarring the documentation"/>
   <tar destfile="${dist}/${appName}-src.tar.gz" compression="gzip">
     
     <tarfileset dir="${docs.all.dir}">
       <patternset refid="docs.all"/>
     </tarfileset>
     
     <tarfileset dir="${docs.misc.dir}">
       <patternset refid="docs.misc"/>
     </tarfileset>
     
     <tarfileset dir="${src.files.dir}">
       <patternset refid="src.files"/>
     </tarfileset>
   </tar> 
   <checksum file="${dist}/${appName}-src.tar.gz" forceOverwrite="true"/>
   <checksum file="${dist}/${appName}-src.tar.gz" forceOverwrite="true" 
             algorithm="SHA1"/>
 </target>
 
 <target name="tar-bin-stand-alone" depends="package-stand-alone,tar-docs" 
         description="Tar the binary stand-alone distribution 
                      with the documentation">
   <echo message="Tarring the binary stand-alone distribution with the documentation"/>
   <tar destfile="${dist}/${appName}-${package.stand-alone}-bin.tar.gz" 
        compression="gzip">
     
     <tarfileset dir="${docs.all.dir}">
       <patternset refid="docs.all"/>
     </tarfileset>
     
     <tarfileset dir="${docs.misc.dir}">
       <patternset refid="docs.misc"/>
     </tarfileset>
     
     <tarfileset dir="${dist}" prefix="lib">
       <patternset refid="bin.jar"/>
     </tarfileset>
     <tarfileset dir=".">
       <include name="${mysql.jar}"/>
     </tarfileset>    </tar> 
   <checksum file="${dist}/${appName}-${package.stand-alone}-bin.tar.gz" 
             forceOverwrite="true"/>
   <checksum file="${dist}/${appName}-${package.stand-alone}-bin.tar.gz" 
             forceOverwrite="true" algorithm="SHA1"/>
 </target>
 
 <target name="tar-bin-web" depends="package-web,tar-docs" 
         description="Tar the binary web distribution with the documentation">
   <echo message="Tarring the binary web distribution with the documentation"/>
   <tar destfile="${dist}/${appName}-${package.web}-bin.tar.gz" 
        compression="gzip">
     
     <tarfileset dir="${docs.all.dir}">
       <patternset refid="docs.all"/>
     </tarfileset>
     
     <tarfileset dir="${docs.misc.dir}">
       <patternset refid="docs.misc"/>
     </tarfileset>
     
     <tarfileset dir="${dist}">
       <patternset refid="bin.war"/>
     </tarfileset>
   </tar> 
   <checksum file="${dist}/${appName}-${package.web}-bin.tar.gz" 
             forceOverwrite="true"/>
   <checksum file="${dist}/${appName}-${package.web}-bin.tar.gz" 
             forceOverwrite="true" algorithm="SHA1"/>
 </target>
 
 <target name="tar-bin" depends="tar-bin-stand-alone,tar-bin-web" 
         description="Tar the binary distribution with the documentation">
   <echo message="Tarring the binary distribution with the documentation"/>
   <tar destfile="${dist}/${appName}-bin.tar.gz" compression="gzip">
     
     <tarfileset dir="${docs.all.dir}">
       <patternset refid="docs.all"/>
     </tarfileset>
     
     <tarfileset dir="${docs.misc.dir}">
       <patternset refid="docs.misc"/>
     </tarfileset>
     
     <tarfileset dir="${src.files.dir}">
       <patternset refid="src.files"/>
     </tarfileset>
     
     <tarfileset dir="${dist}" prefix="lib">
       <patternset refid="bin.jar"/>
     </tarfileset>
     <tarfileset dir=".">
       <include name="${mysql.jar}"/>
     </tarfileset>
     
     <tarfileset dir="${dist}">
       <patternset refid="bin.war"/>
     </tarfileset>
   </tar>
   <checksum file="${dist}/${appName}-bin.tar.gz" forceOverwrite="true"/>
   <checksum file="${dist}/${appName}-bin.tar.gz" forceOverwrite="true" 
             algorithm="SHA1"/>
 </target>
 
 
  
 
 <target name="tar-bin-web-new" depends="package-web,tar-docs,zip-bin-web" 
         description="Tar the binary web distribution with the documentation">
   <echo message="Tarring the binary web distribution with the documentation"/>
   <unzip src="${dist}/${appName}-${package.web}-bin.zip" dest="${tmp}/web"/>
   <tar destfile="${dist}/${appName}-${package.web}-bin.tar.gz" 
        compression="gzip">
     <tarfileset dir="${tmp}/web"/>
   </tar>
   <checksum file="${dist}/${appName}-${package.web}-bin.tar.gz" 
             forceOverwrite="true"/>
   <checksum file="${dist}/${appName}-${package.web}-bin.tar.gz" 
             forceOverwrite="true" algorithm="SHA1"/>
 </target>
 
 <target name="tar-bin-new" 
         depends="zip-bin,tar-bin-stand-alone,tar-bin-web-new"
         description="Tar the binary distribution with the documentation">
   <echo message="Tarring the binary distribution with the documentation"/>
   <delete failonerror="false" includeemptydirs="true">
     <fileset dir="${tmp}" includes="**"/>
   </delete>
   <unzip src="${dist}/${appName}-bin.zip" dest="${tmp}"/>
   <tar destfile="${dist}/${appName}-bin.tar.gz" compression="gzip">
     <tarfileset dir="${tmp}"/>
   </tar>
   <checksum file="${dist}/${appName}-bin.tar.gz" forceOverwrite="true"/>
   <checksum file="${dist}/${appName}-bin.tar.gz" forceOverwrite="true" 
             algorithm="SHA1"/>
 </target>
 
 <target name="tar-all" depends="tar-src,tar-bin" 
         description="Tar the binary and source distributions">
   <echo message="Tarred the binary and source distributions"/>
 </target>
 
 
 
 
 
 
 


 <target name="ftp-docs" depends="zip-docs,tar-docs" 
         description="Place the documentation on FTP">
   <echo message="Placing the documentation on FTP"/>
   <ftp server="${ftp.server}"
        userid="${ftp.user}"
        password="${ftp.password}"
        remotedir="${ftp.src.dir}"
        action="send"
        newer="true"
        timediffauto="true">
     <fileset dir="${dist}">
       <include name="${appName}-${package.docs}.*"/>
     </fileset>
   </ftp>
 </target>
 
 <target name="ftp-src" depends="zip-src,tar-src" 
         description="Place the source code on FTP">
   <echo message="Placing the source code on FTP"/>
   <ftp server="${ftp.server}"
        userid="${ftp.user}"
        password="${ftp.password}"
        remotedir="${ftp.src.dir}"
        action="send"
        newer="true"
        timediffauto="true">
     <fileset dir="${dist}">
       <include name="${appName}-src.*"/>
     </fileset>
   </ftp>
 </target>
 
 <target name="ftp-bin" depends="zip-bin,tar-bin" 
         description="Place the binaries on FTP">
   <echo message="Placing the binaries on FTP"/>
   <ftp server="${ftp.server}"
        userid="${ftp.user}"
        password="${ftp.password}"
        remotedir="${ftp.bin.dir}"
        action="send"
        newer="true"
        timediffauto="true">
     <fileset dir="${dist}">
       <include name="${appName}*bin*"/>
     </fileset>
   </ftp>
 </target>
 
 <target name="ftp" description="Place everything on FTP">
   <echo message="Placing everything on FTP"/>
   <antcall target="ftp-docs"/>
   <antcall target="ftp-src"/>
   <antcall target="ftp-bin"/>
 </target>
 



 <target name="email-docs" depends="zip-docs,tar-docs" 
         description="E-mailing the documentation">
   <echo message="E-mailing the documentation"/>
   <mail from="${mail.from}"
         tolist="${mail.tolist}"
         mailhost="${mail.mailhost}"
         user="${mail.user}"
         password="${mail.password}"
         subject="${mail.subject}">
     <message>
       ${mail.message.docs}
     </message>
     <fileset dir="${dist}">
       <include name="${appName}-${package.docs}.*"/>
     </fileset>
   </mail>
 </target>
 
 
 
 
 <target name="deploy-copy-files" depends="copy-web,start-tomcat" 
         description="Deploy the application by copying it to Tomcat">
   <echo message="Copying the expanded web application to CATALINA_HOME"/>
   <property environment="env"/>
   <copy todir="${build.web.web-inf}" file="${src.web.conf}/web.xml"/>
   <copy todir="${env.CATALINA_HOME}/webapps/${appName}">
     <fileset dir="${build.web.root}"/>
   </copy>
 </target>
 
 <target name="deploy-copy-war" depends="package-web,start-tomcat" 
         description="Deploy the WAR by copying it to Tomcat">
   <echo message="Copying the WAR to CATALINA_HOME"/>
   <property environment="env"/>
   <copy file="${appName.war}" todir="${env.CATALINA_HOME}/webapps"/>
 </target>
 
 <target name="deploy-context" depends="copy-web,start-tomcat" 
         description="Deploy the web application using a context XML file">
   <echo message="Deploying the web application using a context XML file"/>
   <property environment="env"/>
   <copy todir="${build.web.web-inf}" file="${src.web.conf}/web.xml"/>
   <copy todir="${env.CATALINA_HOME}/conf/Catalina/localhost" 
         file="${src.web.conf}/${appName}.xml"/>
 </target>
 
 <taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask"/>
 
 <target name="deploy" depends="package-web,start-tomcat" 
         description="Hot deploy the application">
   <echo message="Deploying the WAR to Tomcat"/>
   <deploy url="${manager.url}"
           username="${manager.user}"
           password="${manager.password}"  
           path="/${appName}"
           war="file:${appName.war}"
           update="true"/>
 </target>
 
 <taskdef name="undeploy" classname="org.apache.catalina.ant.UndeployTask"/>
 
 <target name="undeploy" description="Undeploy the application">
   <echo message="Undeploying the WAR"/>
   <undeploy url="${manager.url}"
             username="${manager.user}"   
             password="${manager.password}"
             path="/${appName}"/>
 </target>
 
 
 
 
 <target name="database" 
         description="Prepare the database by creating it and inserting data">
   <echo message="Preparing the database by creating it and inserting data"/>
   <property file="${database.properties}"/>
   <sql driver="${driver.name}"
        url="${database.root}"
        userid="${database.user}"
        password="${database.password}">
     <classpath refid="build.classpath"/>
     <transaction src="${src.shared.conf}/${drop.sql}"/>
     <transaction src="${src.shared.conf}/${create.sql}"/>
     <transaction src="${src.shared.conf}/${insert.sql}"/>
   </sql>
 </target>
 
 
 <target name="set-argument-defaults" depends="package-stand-alone" 
         description="Set the defaults for the command-line arguments">
   <echo message="Setting the defaults for the command-line arguments"/>
   
   <condition property="arg0" value="">
     <not>
       <isset property="${arg0}"/>
     </not>
   </condition>
   
   <condition property="arg1" value="">
     <not>
       <isset property="${arg1}"/>
     </not>
   </condition>
 </target>
 
 <target name="run-stand-alone-java" depends="set-argument-defaults" 
         description="Run the stand-alone application">
   <echo message="Running the stand-alone application"/>
   
   <property name="results.file" value="results.txt"/>
   
   <tstamp/>
   <java classname="org.mwrm.plants.client.PlantClient">
     <arg value="${arg0}"/>
     <arg value="${arg1}"/>
     <classpath refid="build.classpath"/>
     <redirector output="${DSTAMP}-${TSTAMP}-${results.file}"/>
   </java>
 </target>
 
 <target name="check-port" description="Check whether Tomcat is running">
   <echo message="Checking whether Tomcat is running"/>
   <condition property="tomcat.running">
     <socket server="${tomcat.host}" port="${tomcat.port}"/> 
   </condition>
 </target>
 
 <target name="start-tomcat" depends="check-port" 
         description="Start Tomcat if it isn"t running" unless="tomcat.running">
   <echo message="Starting Tomcat"/>
   <property environment="env"/>
   <exec executable="${env.CATALINA_HOME}/bin/${tomcat.executableName}" 
         spawn="true" vmlauncher="false"/>
   <sleep seconds="15"/>
   
 </target>
 
  
 
 


 <target name="test-init" description="Prepare the test directories">
   <echo message="Preparing the test directories"/>
   <delete dir="${test.junit.reports}"/>
   <delete dir="${test.junit.data}"/>
   <delete dir="${test.checkstyle.reports}"/>
   <delete dir="${test.checkstyle.data}"/>
   <mkdir dir="${test.build}"/>
   <mkdir dir="${test.junit.reports}"/>
   <mkdir dir="${test.junit.data}"/>
   <mkdir dir="${test.checkstyle.reports}"/>
   <mkdir dir="${test.checkstyle.data}"/>
 </target>
 
 <target name="compile-tests" 
         depends="package-stand-alone,deploy-copy-war,test-init" 
         description="Compile the test classes">
   <echo message="Compiling the test classes"/>
   <javac destdir="${test.build}"
          srcdir="${test.src}">
     <classpath refid="test.classpath"/>
   </javac>
 </target>





 <target name="check-tests" depends="test-init" 
         description="Check whether the tests should run">
   <echo message="Checking whether the tests should run"/>
   <fileset id="shared-check" dir="${src.shared.root}" 
            excludes="docs/**,**/*.sql,**/package.html"/>
   <condition property="tests.notRequired">
     <and>
       <uptodate targetfile="${appName.jar}">
         <srcfiles refid="shared-check"/>
       </uptodate>

       <uptodate targetfile="${appName.jar}">
         <srcfiles dir="${src.stand-alone.java}" includes="**/*.java"/>
       </uptodate>
       <uptodate targetfile="${appName.war}">
         <srcfiles refid="shared-check"/>
       </uptodate>
       <uptodate targetfile="${appName.war}">
         <srcfiles dir="${src.web.root}" 
                   excludes="docs/**,**/${appName}.xml,**/package.html"/>
       </uptodate>
       <uptodate>
         <srcfiles dir="${test.src}" includes="**/*.java"/>
         <globmapper from="*.java" to="${basedir}/${test.build}/*.class"/>
       </uptodate>
       <not>
         <available file="${last.test.failed.file}"/>
       </not>
       <not>
         <isset property="test.class"/>
       </not>
     </and>
   </condition>
 </target>
 
 <target name="test" depends="check-tests,compile-tests" 
         unless="tests.notRequired" 
         description="Test the application">
   <echo message="Testing the application"/>
   <junit printsummary="false" 
          errorProperty="test.failed"
          failureProperty="test.failed">
     <classpath refid="test.classpath"/>
     <formatter type="brief" usefile="false"/>
     <formatter type="xml"/>
     <test name="${test.class}" todir="${test.junit.data}" if="test.class"/>
     <batchtest todir="${test.junit.data}" unless="test.class">
       <fileset dir="${test.build}" includes="**/*Test.class"/>
     </batchtest>
   </junit>
 
   <junitreport todir="${test.junit.data}">
     <fileset dir="${test.junit.data}">
       <include name="TEST-*.xml"/>
     </fileset>
     <report format="frames" todir="${test.junit.reports}"/>
   </junitreport>
   <echo message="The last test run failed."
         file="${last.test.failed.file}"/>
   <fail message="One or more tests failed. Check the reports 
                  in ${basedir}/${test.junit.reports}/index.html." 
         if="test.failed"/>
   <delete file="${last.test.failed.file}"/>
 </target>
 


 <target name="coding-style" depends="test-init" 
         description="Check the coding conventions">
   <echo message="Checking the coding conventions"/>
   <taskdef resource="checkstyletask.properties"/>
   <checkstyle config="${checkstyle.home}/sun_checks.xml" 
               failOnViolation="false" 
               failureProperty="checkstyle.failed">
     <classpath refid="build.classpath"/>
     <formatter type="xml" 
                tofile="${test.checkstyle.data}/checkstyle_report.xml"/>
     <fileset refid="javadoc"/>
     <fileset dir="${test.src}"/>
     <fileset dir="${ant.tasks.src}"/>
   </checkstyle>
   <xslt in="${test.checkstyle.data}/checkstyle_report.xml" 
         out="${test.checkstyle.reports}/checkstyle_report.html" 
         style="${checkstyle.home}/contrib/checkstyle-noframes.xsl"/>
   <fail message="One or more Checkstyle checks failed. Check the reports in ${basedir}/${test.checkstyle.reports}" 
         if="checkstyle.failed"/>
 </target>
 <target name="clean" description="Clean up the working directories">
   <echo message="Cleaning up"/>
   <delete dir="${build}"/>
 </target>

</project>


 </source>
   
  
 
  



Use junit with call junit test cases

   <source lang="java">

//https://amateur.dev.java.net/ //GNU General Public License (GPL v. 2.0) <?xml version="1.0" encoding="UTF-8"?> <project name="Amateur" default="compile" basedir=".">


   <property name="JUNIT_HOME" value="/Applications/eclipse/plugins/org.junit_3.8.1"/>
   <property name="QTJava" value="/System/Library/Java/Extensions/QTJava.zip"/>
   <taskdef name="jarbundler"
            classpath="lib/jarbundler-1.8.1.jar"
            classname="net.sourceforge.jarbundler.JarBundler" /> 
   
   <path id="project.classpath">
       <pathelement location="bin"/>
       <pathelement location="${QTJava}"/>
   </path>
   
   <path id="test.classpath">
       <path refid="project.classpath"/>
       <pathelement location="${JUNIT_HOME}/junit.jar"/>
   </path>
   
   <target name="init">
       <tstamp/>
       <property name="Name"    value="Amateur"/>
       <property name="name"    value="amateur"/>
       <property name="version" value="1.0d6"/>
       <property name="year"    value="2006"/>
       <mkdir dir="bin"/>
       <mkdir dir="dist"/>
   </target>
   
   <target name="clean">
       <delete dir="bin"/>
       <delete dir="dist"/>
   </target>
   
   <target name="compile" depends="init">
       <echo message="${ant.project.name}: ${ant.file}"/>
       <javac destdir="bin">
           <src path="src"/>
           <classpath refid="project.classpath"/>
       </javac>
   </target>
   
   <target name="test">
       <junit fork="yes" printsummary="withOutAndErr">
           <formatter type="plain"/>
           <test name="com.elharo.quicktime.tests.AmateurTests"/>
           <classpath refid="test.classpath"/>
       </junit>
   </target>
   
   <target name="run">
       <java fork="yes" classname="com.elharo.quicktime.Main" failonerror="true">
           <classpath refid="project.classpath"/>
       </java>
   </target>
   
   <target name="jar" depends="compile">
      <jar jarfile="dist/${name}-${version}.jar"
            basedir="bin"
            index="no"
            compress="yes"
            includes="com/elharo/quicktime/*"
            excludes="com/elharo/quicktime/tests/* com/elharo/quicktime/pantry/*">
         <manifest>
           <attribute name="Built-By" value="${user.name}"/>
           <attribute name="Specification-Title"    value="Amateur"/>
           <attribute name="Specification-Version"  value="${version}"/>
           <attribute name="Specification-Vendor"   value="Elliotte Rusty Harold"/>
           <attribute name="Implementation-Title"   value="Amateur"/>
           <attribute name="Implementation-Version" value="${version}"/>
           <attribute name="Implementation-Vendor"  value="Elliotte Rusty Harold"/>          
           <attribute name="Main-Class" value="com.elharo.quicktime.Main"/>
           <section name="com/elharo/quicktime/">
             <attribute name="Sealed" value="true"/>
             <attribute name="Specification-Title"   value="Amateur core classes"/>
             <attribute name="Implementation-Title"  value="com.elharo.quicktime"/>
           <attribute name="Implementation-Version" value="${version}"/>
           <attribute name="Implementation-Vendor"  value="Elliotte Rusty Harold"/>          
          </section>
         </manifest>
       </jar>        
   </target>
   
   <target name="app" depends="jar">
     <delete dir="dist/Amateur.app"/>
       <jarbundler dir="dist" jars="dist/${name}-${version}.jar" 
                   name="Amateur" 
                   mainclass="com.elharo.quicktime.Main" 
                   infostring=" ${version}"
                   version=" ${version}"
                   screenmenu="true"
                   signature="QTAM"
                   bundleid="com.elharo.quicktime"
                   icon="Amateur.icns"
       >
         <documenttype name="Amateur Media"
                   mimetypes="image/jpeg image/png image/gif video/mpeg video/quicktime audio/mpeg" 
                   role="Viewer"/>
         <documenttype name="Amateur Media"
                   extensions="jpg mov mpg mp3 gif png pdf" 
                   role="Viewer"/>
       </jarbundler>
   </target>
   
   <target name="image" depends="app">
     <exec executable="hdiutil" os="Mac OS X">
         <arg value="create"/>
         <arg value="-srcfolder"/>
         <arg value="dist/${Name}.app"/>
         <arg value="-ov"/>
         <arg value="dist/${Name}-${version}.dmg"/>
     </exec>
   </target>
   <taskdef classpath="lib/cobertura.jar" resource="tasks.properties" />
   
   <target name="instrument">
     <cobertura-instrument todir="bin/instrumented-classes">
       <fileset dir="bin/classes">
         <include name="**/*.class"/>
       </fileset>
     </cobertura-instrument>
   </target>
   
   <target name="cover-test" depends="instrument">
     <mkdir dir="${testreportdir}" />
     <junit dir="./" failureproperty="test.failure" printSummary="yes" 
            fork="true" haltonerror="true">
       
       <classpath location="lib/cobertura.jar"/>
       <classpath location="bin/instrumented-classes"/>
       <classpath>
         <fileset dir="${libdir}">
           <include name="*.jar" />
         </fileset>
         <pathelement path="${testclassesdir}" />
         <pathelement path="${classesdir}" />
       </classpath>
       <batchtest todir="${testreportdir}">
         <fileset dir="src">
           <include name="**/*Test.java" />
         </fileset>
       </batchtest>
     </junit>
   </target>
   

</project>

 </source>