Per*_*søe 6 automation android unit-testing robolectric
我正在努力在连续构建环境中设置Robolectric,我在设置它时遇到了一些问题.
我的android Eclipse项目结构包含一个Android项目和一个JUnit4测试项目,如Robolectric"Quick Start for Eclipse"快速指南中所述.我的示例测试在Eclipse中运行良好,但我也需要能够使用ant进行测试.我如何构建我的ANT build.xml来支持这个?我应该如何应用与Eclipse测试项目相同的更改?
我一直在研究RobolectricSample项目的build.xml文件,但它包含一个项目,其中生产和测试代码位于项目src文件夹下.我明白这就是maven假设的事情(???),但我只想去ANT.
这是旧的,但希望这对其他人有帮助。我最近完成了这个...robolectric、mockito、Jenkins 和 ant。这是我运行的 ant 构建脚本。基本上,您只需要设置库的路径并设置目标即可开始测试。我还将 android.jar 文件和maps.jar 文件复制到测试项目的lib 文件夹中,这似乎使生活更轻松,但也许您可以采取更好的方法。
<?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>
Run Code Online (Sandbox Code Playgroud)
最后,我从 Jenkins 运行以下命令来开始一切:
ant -f ./build-ant.xml test-report-junit
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1646 次 |
最近记录: |