代码之家  ›  专栏  ›  技术社区  ›  George

从命令行运行android单元测试?

  •  15
  • George  · 技术社区  · 14 年前

    tutorial . 例如,我想对电子邮件应用程序运行测试。我打开 /apps/Email/tests/AndroidManifest.xml 文件,找 <manifest> 元素,然后看 package com.android.email.tests ,在 <instrumentation> android:name android.test.InstrumentationTestRunner

    $ . build/envsetup.sh
    $ lunch 1
    $ adb shell am instrument -w com.android.email.tests/android.test.InstrumentationTestRunner
    

    但这失败了:

    INSTRUMENTATION_STATUS: id=ActivityManagerService
    android.util.AndroidException: INSTRUMENTATION_FAILED: com.android.email.tests/android.test.InstrumentationTestRunner
    INSTRUMENTATION_STATUS: Error=Unable to find instrumentation info for: ComponentInfo{com.android.email.tests/android.test.InstrumentationTestRunner}
    

    所以。。我做错什么了?

    8 回复  |  直到 14 年前
        1
  •  9
  •   marekdef    13 年前

    请快跑 python开发/testrunner/runtest.py电子邮件

    然后你会看到它的工作:)。

    基本上你没有安装com.android.email.tests包。

    您可以看到可用于检测的内容

    pm list instrumentation
    

    你应该看看

    仪表mentation:com.android.email.tests/android.test.InstrumentationTestRunner (target=com.android.email)

    当你这么做的时候

    pm list packages
    

    package:com.android.email

    package:com.android.email.tests

        2
  •  3
  •   Marc Bernstein    14 年前

    您可能需要使用 android create test-project 命令在先。在Android开发者网站上查看此页面: Testing In Other IDE's

        3
  •  2
  •   George    14 年前

    我实际上忘记了在我的设备/模拟器上构建和安装测试包。发现在做了以下工作之后:

    $ adb shell
    # cd data/packages
    # ls
    

    而且没有 com.android.email.tests 在那里打包。

        4
  •  1
  •   Blundell    11 年前

     <instrumentation
        android:name="android.test.InstrumentationTestRunner"
        android:label="Tests for app.under.test.package"
        android:targetPackage="app.under.test.package" />
    

    android:name 属性错误则目标包错误(以上是正确的解决方案)

        5
  •  1
  •   Joshua Pinter    10 年前

    模拟器上未安装测试包

    我遇到了完全相同的问题,并且意识到模拟器上没有安装测试包,这就是@marekdef所说的。

    我没有使用生成的测试文件中的命令,而是使用了以下命令:

    ant debug install test
    

    *我有我的测试项目 <project_home>/tests 所以下面的命令就是我最后使用的 项目主页 目录:

    (cd tests && ant debug install test;)
    

    希望有帮助。

        6
  •  0
  •   cdhabecker    14 年前

    在这种情况下,我收到了“Unable to find instrumentation info”错误:我用与被测项目相同的src包名定义了我的测试项目。例如,这两个项目的源代码都在com.mycompany.android包中。这个并行src包设置在Eclipse中运行得很好,但是在模拟器上,似乎testapk正在覆盖appapk。

    修正:我把测试项目的src包改成test.mycompany.android。

    <manifest package=“正在测试的项目包”…>

    <

        7
  •  0
  •   korosmatick    9 年前

    $ gradle :project:installDebug :project:installDebugAndroidTest
    
        8
  •  0
  •   MatPag    5 年前

    我有这个 run_all_test.sh

    #!/bin/bash
    ./gradlew --no-daemon clean test connectedCheck --stacktrace;
    if [ $? -eq 0 ]
    then
        echo "tests are successful"
    else
        echo "tests FAILED"
        exit 1
    fi
    

    说明:

    • 测试->执行所有单元测试

    • 连接检查->执行所有仪表化测试

    您可以从这里开始,根据您的需要按照以下文档进行自定义: https://developer.android.com/studio/test/command-line

        9
  •  0
  •   yoAlex5    3 年前

    [Android test types]

    使用gradlew从命令行运行所有测试 [About]

    ./gradlew test
    ./gradlew :<moduleName>:test<variantName>UnitTest
    

    仪器测试(AndroidTest后缀)

    ./gradlew connectedAndroidTest
    ./gradlew :<moduleName>:connected<variantName>AndroidTest
    

    assemble

    //Unit
    ./gradlew :<moduleName>:assemble<variantName>UnitTest
    
    //functional
    ./gradlew :<moduleName>:assemble<variantName>AndroidTest