gpt4 book ai didi

android - 使用 Robolectric 和 ANT 进行测试

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:06:11 24 4
gpt4 key购买 nike

我正致力于在持续构建环境中设置 Robolectric,但我在设置时遇到了一些问题。

我的 android Eclipse 项目结构由一个 android 项目和一个 JUnit4 测试项目组成,如 Robolectric“Eclipse 快速入门”快速指南中所述。我的示例测试在 Eclipse 中运行良好,但我还需要能够使用 ant 进行测试。我将如何构建我的 ANT build.xml 来支持它?以及我应该如何应用对 Eclipse 测试项目所做的相同更改?

我一直在研究 RobolectricSample 项目的 build.xml 文件,但它由一个项目组成,生产代码和测试代码都位于项目 src 文件夹下。我知道这就是 maven 假设事情的方式(???),但我只想选择 ANT。

最佳答案

这是旧的,但希望这对其他人有帮助。我最近做了这个……robolectric、mockito、Jenkins 和 ant。这是我运行的 ant 构建脚本。基本上你只需要设置你的库的路径并设置一个目标来开始测试。我还在测试项目的 lib 文件夹中复制了 android.jar 文件和 maps.jar 文件,这似乎让生活更轻松,但也许你可以做一些更好的方法。

<?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>

最后,我从 Jenkins 运行以下命令以开始一切:

ant -f ./build-ant.xml test-report-junit

关于android - 使用 Robolectric 和 ANT 进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9701286/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com