Testing with Robolectric and ANT

Im working on setting up Robolectric in a continuous build environment, and I have some problems with setting it up.

My project structure for my Eclipse Android project consists of an android project and a JUnit4 test project, as described in the Robolectric Quick Start Guide for Quick Start for Eclipse. My test tests work fine with Eclipse, but I also need to be able to test with ant. How do I create my ant build.xml to support this? and how do I apply the same changes that are made in an Eclipse project?

I studied the build.xml file of the RobolectricSample project, but it consists of one project with production and test code located in the src folder of the projects. I understand that this is how maven assumes things (???), but I'd love to go only for ant.

+6
source share
1 answer

It is old, but hopefully it helps someone else. I did this recently ... robolectric, mockito, Jenkins and ant. Here is the ant build script that I am running. Basically, you just need to configure the path to your libraries and set up a goal to run the test. I also copy the android.jar file and the maps.jar file in the lib folder of the test project, this seems to make life easier, but maybe you can do it better.

<?xml version="1.0" encoding="UTF-8" standalone="no"?> <project name="unit_tests" default="test-report-junit" basedir="."> <description> Sample Robolectric Ant Build </description> <!-- set global properties for this build, if you have libraries, include them here with a relative path...I have samples as library1, library2, library3, located on the same level as your project, but you may need to modified this to get it to work for your setup. --> <property name="libs.dir" value="./lib/"/> <property name="build.dir" value="./build/"/> <property name="android.library1.classpath" value="./../../library1/bin/classes/"/> <property name="android.library2.classpath" value="./../../library2/bin/classes/"/> <property name="android.library3.classpath" value="./../../library3/bin/classes/"/> <property name="test.report.dir" value="./test-reports/"/> <property name="test.html.dir" value="./test-report-html/"/> <property name="source.dir" value="./src/"/> <filelist id="android_jars" dir="${libs.dir}"> <file name="android.jar"/> <file name="maps.jar"/> </filelist> <filelist id="libs_jars" dir="${libs.dir}"> <file name="junit.jar"/> <file name="hamcrest.jar"/> <file name="json.jar"/> <file name="google-play-services.jar"/> <file name="mockito-all-1.9.5.jar"/> <file name="robolectric-1.1-jar-with-dependencies.jar"/> </filelist> <path id="compile_classpath"> <filelist refid="libs_jars"/> <filelist refid="android_jars"/> <pathelement path="${android.project.classpath}"/> <pathelement path="${android.library1.classpath}"/> <pathelement path="${android.library2.classpath}"/> <pathelement path="${android.library3.classpath}"/> <pathelement path="${build.dir}"/> </path> <path id="junit_classpath"> <pathelement path="${build.dir}"/> <pathelement path="${android.library1.classpath}"/> <pathelement path="${android.library2.classpath}"/> <pathelement path="${android.library3.classpath}"/> <!-- NOTE: junit.jar must come before android.jar! --> <filelist refid="libs_jars"/> <filelist refid="android_jars"/> </path> <!-- targets --> <target name="init"> <!-- Create the time stamp --> <tstamp/> <mkdir dir="${build.dir}"/> </target> <target name="compile" depends="init" description="compile test source"> <javac srcdir="${source.dir}" destdir="${build.dir}" debug="true" > <classpath refid="compile_classpath" /> </javac> <copy todir="build"> <fileset dir="src" includes="**/*.xml,**/*.properties,**/*.txt,**/*.ico" /> </copy> </target> <target name="test-run" depends="compile" description="Run JUnit tests"> <mkdir dir="${test.report.dir}"/> <echo message="Running JUnit Tests in directory ${source.dir}..."/> <junit showoutput="true" printsummary="yes" failureproperty="junit.failure" fork="yes" forkmode="once" maxmemory="512m"> <formatter type="plain"/> <formatter type="xml"/> <batchtest todir="${test.report.dir}"> <fileset dir="${source.dir}"> <include name="**/*Test.java"/> </fileset> </batchtest> <classpath refid="junit_classpath"/> </junit> <fail if="junit.failure" message="Unit test(s) failed. See reports!"/> </target> <target name="test-report-junit" depends="test-run" description="Generate JUnit HTML reports"> <mkdir dir="${test.html.dir}"/> <junitreport todir="${test.report.dir}"> <fileset dir="${test.report.dir}" includes="TEST-*.xml"/> <report format="frames" todir="${test.html.dir}"/> </junitreport> </target> <target name="clean" description="Clean Up" > <delete dir="${build.dir}"/> <delete dir="${test.report.dir}"/> <delete dir="${test.html.dir}"/> <delete file="${basedir}/tmp/cached-robolectric-classes.jar"/> </target> </project> 

Finally, I ran the following command from Jenkins to get started:

 ant -f ./build-ant.xml test-report-junit 
+4
source

Source: https://habr.com/ru/post/910698/


All Articles