18da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal<?xml version="1.0" encoding="UTF-8"?>
28da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal<project name="Android Mock" default="all-tests" basedir=".">
38da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  <description>
48da3e6ec64b991f5aa1e6561941d130683eba753Luis SigalAndroid Mock is a wrapper for EasyMock (2.4) which allows for real Class mocking on
58da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalan Android (Dalvik) VM.
68da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
78da3e6ec64b991f5aa1e6561941d130683eba753Luis SigalAll methods on Android Mock are syntactically equivalent to EasyMock method
88da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalcalls, and will delegate calls to EasyMock, while performing the required
98da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigaltransformations to avoid Dalvik VM troubles.
108da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
118da3e6ec64b991f5aa1e6561941d130683eba753Luis SigalCalls directly to EasyMock will work correctly only if the Class being mocked
128da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalis in fact an Interface. Calls to Android Mock will work correctly for both
138da3e6ec64b991f5aa1e6561941d130683eba753Luis SigalInterfaces and concrete Classes.
148da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
158da3e6ec64b991f5aa1e6561941d130683eba753Luis SigalAndroid Mock requires that the code being mocked be instrumented prior to
168da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalloading to the Dalvik VM by having called the MockGenerator.jar file. Try
178da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigalrunning java -jar MockGenerator.jar --help for more information.
188da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  </description>
198da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
208da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  <!-- Global Build Properties -->
218da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  <property file="build.properties"/>
228da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
238da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  <!-- Imports -->
248da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  <import file="src/build-runtime.xml"/>
258da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  <import file="src/build-mockgen.xml"/>
268da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  <import file="src/build-framework-gen.xml"/>
278da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
288da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  <!-- Android Mock Source Jar Properties -->
298da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  <property name="source-bin" value="bin/source"/>
308da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  <property name="source-lib-jar" value="AndroidMock-src.jar"/>
318da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
328da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  <!-- Android Mock Test Properties -->
338da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  <property name="junit-jar" value="junit.jar"/>
348da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  <property name="test-bin" value="bin/tests"/>
358da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  <property name="test-results-folder" value="${test-bin}/results"/>
368da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  <property name="test-source-base" value="tests"/>
378da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
388da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  <!-- Classpaths -->
398da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  <path id="tests.path">
408da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    <pathelement location="${lib-folder}/${easymock-jar}"/>
418da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    <pathelement location="${lib-folder}/${javassist-jar}"/>
428da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    <pathelement location="${runtime.bin}/${runtime.deploy-jar}"/>
438da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    <pathelement location="${mockgen.bin}/${mockgen.deploy-jar}"/>
448da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    <pathelement location="${lib-folder}/${junit-jar}"/>
458da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  </path>
468da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
478da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  <!-- Private Build Targets -->
488da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  <target name="-dirs">
498da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    <mkdir dir="${source-bin}"/>
508da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    <mkdir dir="${test-bin}"/>
518da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    <mkdir dir="${staging}"/>
528da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    <mkdir dir="${test-results-folder}"/>
538da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  </target>
548da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
558da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  <target name="-clean-staging">
568da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    <delete dir="${staging}"/>
578da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  </target>
588da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
598da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  <!-- Public Build Targets -->
608da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  <target name="clean" depends="-clean-staging,mockgen.clean,runtime.clean">
618da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    <delete dir="${source-bin}"/>
628da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    <delete dir="${framework-mock-staging}"/>
638da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    <delete dir="${test-results-folder}" failonerror="false"/>
648da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    <delete dir="${test-bin}" failonerror="false"/>
658da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  </target>
668da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
678da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  <target name="build-dist"
688da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      depends="mockgen.build-deploy, runtime.build-deploy, build-source-lib"/>
698da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
708da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  <target name="build-source-lib" depends="-dirs"
718da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      description="Builds a jar file containing the Android Mock source files (no dependencies)">
728da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    <jar destfile="${source-bin}/${source-lib-jar}" basedir="${source-base}" includes="**/*.java"/>
738da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  </target>
748da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
758da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  <!-- Public Test Targets -->
768da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  <target name="all-tests" depends="-test-base"
778da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      description="Builds the full distribution package and runs all tests storing results in ${test-results-folder}">
788da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    <junit printsummary="no" showoutput="no" reloading="false" failureproperty="testsFailed">
798da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      <formatter type="xml"/>
808da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      <classpath location="${test-bin}"/>
818da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      <classpath refid="tests.path"/>
828da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      <batchtest todir="${test-results-folder}">
838da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        <fileset dir="${test-bin}">
848da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          <include name="**/*Test.class"/>
858da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal          <include name="**/*Tests.class"/>
868da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        </fileset>
878da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      </batchtest>
888da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    </junit>
898da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    <echo>Test Results are available in ${test-results-folder}</echo>
908da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    <junitreport todir="${test-results-folder}">
918da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      <fileset dir="${test-results-folder}">
928da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        <include name="TEST-*.xml"/>
938da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      </fileset>
948da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      <report format="frames" todir="${test-results-folder}/html"/>
958da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    </junitreport>
968da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    <fail if="testsFailed" message="Tests failed"/>
978da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  </target>
988da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
998da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  <!-- Private Test Targets -->
1008da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  <target name="-test-base" depends="build-dist">
1018da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    <javac destdir="${test-bin}" target="1.5" srcdir="${test-source-base}"
1028da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal        debug="true" >
1038da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      <compilerarg value="-proc:none"/>
1048da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal      <classpath refid="tests.path"/>
1058da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal    </javac>
1068da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal  </target>
1078da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal
1088da3e6ec64b991f5aa1e6561941d130683eba753Luis Sigal</project>
109