【问题标题】:connectedAndroidTest how to run specific testsconnectedAndroidTest 如何运行特定的测试
【发布时间】:2016-08-10 11:22:15
【问题描述】:

我是一家初创公司的 QA。我的开发人员在 Android 项目中设置 Instrumentation 测试。他还设置了 Jenkins Jobs 以在 CI 环境中运行这些测试。

这是在 Build --> Invoke Gradle 脚本下 Jenkins 作业的“任务”字段中给出的命令。 clean assembleDebug connectedAndroidTest testDebug

我想创建自己的 Jenkins 作业来运行不同类型的测试。有没有一种方法可以通过运行“connectedAndroidTest”命令来过滤我的测试? 我尝试使用如下的 shell 脚本,但没有成功。 adb shell am 仪器 -w /

我收到以下错误消息: [执行冒烟测试套件] $ /bin/bash -xe /var/folders/qr/vtm32_d56vz0hgwg5ppdbswc00007q/T/hudson1779650135635362469.sh + adb shell am 仪器 -w ' ' class com.draysonwireless.airmapandroid.rewards/BonusTest.java /var/folders/qr/vtm32_d56vz0hgwg5ppdbswc00007q/T/hudson1779650135635362469.sh:第2行:adb:找不到命令 构建步骤“执行 shell”将构建标记为失败 完成:失败

【问题讨论】:

  • 你的问题不够清楚。您的技术理解似乎限制了您理解问题的原因。我建议您阅读一些教程,然后再回到这里提出一个更具体的问题。
  • @Alex.F 抱歉,我同意这个问题有点模棱两可。基本上,我正在寻找一种仅在 Jenkins 作业中运行特定测试的方法。如果我使用的是 Maven 构建,我知道有一种方法可以使用标签(注释)运行特定的测试。 Gradle 构建是否也有类似的方法?

标签: android android-instrumentation android-espresso


【解决方案1】:

似乎您的 jenkins 用户看不到 android adb 因此构建失败。将 adb 添加到系统路径或指向它的确切位置。

至于通过 gradle 命令运行特定测试,下面是一个示例:

./gradlew app:connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=com.example.android.testing.blueprint.ui.espresso.EspressoTest#testMethodName

取自here,稍作修改。您的 connectedAndroidtest 命令可能因测试风格的存在而异。

【讨论】:

  • 谢谢否认。我收到以下错误 com.android.builder.testing.ConnectedDevice > No tests found.[Google Nexus 5 - 5.1.0 - API 22 - 1080x1920 - 5.1] FAILED No tests found。这通常意味着您的测试类不是您的测试运行程序所期望的形式(例如,不要从 TestCase 继承或缺少 @Test 注释)。 :app:connectedDebugAndroidTest
  • @jellyBeans 检查包名,如com.android.builder.testing。它应该是您运行此命令adb shell pm list instrumentation 后将获得的软件包之一。
  • 我认为,这个错误与模拟器有关。当我使用不同的模拟器时,不再看到此错误。但是,发生了另一个异常 INSTRUMENTATION_STATUS: Error=Unable to find instrumentation info for: ComponentInfo{com.company.project.SignUpScreeTest/android.support.test.runner.AndroidJUnitRunner}
  • 这是我在 build.gradle 文件 testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 中得到的内容
  • 不应该是com.company.project.test。运行此命令adb shell pm list instrumentation 后检查检测包并将其复制到 gradle 任务命令中。
【解决方案2】:

这是我在 Jenkins 工作中使用的 shell 脚本:

export PATH=$PATH:/Users/Shared/Jenkins/Library/Android/sdk/platform-tools
adb shell am instrument -w -r   -e debug false -e class com.company.project.test.SmokeTest com.company.project.debug.test/android.support.test.runner.AndroidJUnitRunner

文件夹结构应如下所示: app --> src--> androidTest --> java --> com.company.project --> test --> TestClass

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-20
    • 1970-01-01
    • 1970-01-01
    • 2015-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多