Java/Ant/JUnit
Содержание
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>