如何在Eclipse中运行Android测试工具?

12

目前我正在通过命令行运行测试工具:

adb shell am instrument -w com.blah.blah/android.test.InstrumentationTestRunner
有没有一种方法可以在Eclipse中运行它们(并自动安装应用程序)?
2个回答

8
我无法确定自动部署到模拟器的方法。但是,您可以使用相同的“adb shell”命令并创建外部启动配置。我在这里写过类似的主题。使用“-e debug true”参数时,以这种方式启动会更加直观。
然而,如果您使用的是一个好的开发平台,我认为bash shell脚本会更加实用:
function adbtest() {
    adb shell  am instrument -w -e class blah.package.$1 blah.package.test/android.test.InstrumentationTestRunner;
}

这样当我想要测试 blah.package.FooTest 时,我只需要记得输入以下内容:

james@trex:~$ adbtest FooTest

4
我不知道在Eclipse中自动运行测试的好方法,但我已经提供了一个使用ant自动构建和部署测试的简单方法。
我的项目组织如下:
1. 让我们把项目根目录称为root 2. 在root目录下,我有一个由SDK中的activityCreator脚本生成的build.xml。 3. 我有第二个包含测试的项目,位于root/tests
- 这个项目有它自己的AndroidManifest.xml(请参考Android API Demos的结构) - 这个项目也有它自己的build.xml
为了在root/tests/build.xml中支持junit,您需要添加junit的路径。一种方法是将路径添加到编译、dex、debug和release目标中(release被省略了,但它需要与debug相同的更改)。在编译目标中,我们还包括../src路径:
<!-- Compile this project's .java files into .class files. -->
<target name="compile" depends="dirs, resource-src, aidl">
    <javac encoding="ascii" target="1.5" debug="true" extdirs=""
            srcdir="src/:../src"
            destdir="${outdir-classes}"
            bootclasspath="${android-jar}">
        <classpath>
            <fileset dir="${external-libs}" includes="*.jar"/>
            <fileset file="${junit-path}"/>
        </classpath>
     </javac>
</target>

<!-- Convert this project's .class files into .dex files. -->
<target name="dex" depends="compile">
    <echo>Converting compiled files and external libraries into ${outdir}/${dex-file}...</echo>
    <apply executable="${dx}" failonerror="true" parallel="true">
        <arg value="--dex" />
        <arg value="--output=${intermediate-dex-ospath}" />
        <arg path="${outdir-classes-ospath}" />
        <fileset dir="${external-libs}" includes="*.jar"/>
        <fileset file="${junit-path}"/>
    </apply>
</target>

<!-- Package the application and sign it with a debug key.
     This is the default target when building. It is used for debug. -->
<target name="debug" depends="dex, package-res">
    <echo>Packaging ${out-debug-package}, and signing it with a debug key...</echo>
    <exec executable="${apk-builder}" failonerror="true">
        <arg value="${out-debug-package-ospath}" />
        <arg value="-z" />
        <arg value="${resources-package-ospath}" />
        <arg value="-f" />
        <arg value="${intermediate-dex-ospath}" />
        <arg value="-rf" />
        <arg value="${srcdir-ospath}" />
        <arg value="-rj" />
        <arg value="${external-libs-ospath}" />
        <arg value="-rj" />
        <arg value="${junit-path}" />
        <arg value="-nf" />
        <arg value="${native-libs-ospath}" />
    </exec>
</target>

现在,我们可以分别构建这两个项目。最后一步是在root/build.xml中添加一个新的目标,该目标将构建和部署项目和测试,并执行测试。 要做到这一点,请将以下目标添加到root/build.xml中:
<target name="tests" depends="reinstall">
    <echo>Building and installing tests..</echo>
    <exec executable="ant" failonerror="true">
        <arg value="-f" />
        <arg value="tests/build.xml" />
        <arg value="reinstall"/>
    </exec>
    <mkdir dir="${log-dir}" />
    <exec executable="${adb}">
    <arg value="shell" />
    <arg value="am" />
    <arg value="instrument" />
    <arg value="-w" />
    <arg value="-e" />
    <arg value="class" />
    <arg value="org.yourproject.AllTests" />
    <arg value="org.yourproject.tests/android.test.InstrumentationTestRunner" />
    </exec>
</target>

一旦所有设置都完成,启动模拟器并运行“ant tests”。这将在一个命令中构建、部署和执行您的测试。


这正是我所需要的,但我正在尝试弄清楚如何将其与Robotium集成...你有相关示例吗?我对Ant不熟悉,但我需要这样做,以便可以与Hudson集成并完成整个自动化测试循环。 - Richard Green

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接