1

所以我定义了很多 UiAutomatorTestCase 类,每个类最多有 1 或 2 个测试用例。然后我在 Jenkins 上使用 Shell 脚本将这些测试用例串成一系列测试,例如:

adb shell uiautomator runtest myTest.jar -c com.myTest.TestClass1
adb shell uiautomator runtest myTest.jar -c com.myTest.TestClass2
adb shell uiautomator runtest myTest.jar -c com.myTest.TestClass3
adb shell uiautomator runtest myTest.jar -c com.myTest.TestClass4
...
so on so forth.

我遇到的两个 (1/2) 问题之一是,对于 Jenkins 构建,如果这些测试中的任何一个失败都没关系,Jenkins 总是显示为绿色,我需要 Jenkins 停止并为构建显示红色。

另一个(2/2)问题是,如果应用程序在其中一个测试中崩溃,比如 TestClass2,脚本将尝试获取并继续执行。使脚本停止的最佳方法是什么?

有什么建议么?谢谢

4

2 回答 2

2

感谢@KeepCalmAndCarryOn 和 Daniel Beck,我通过 2 个步骤解决了我的问题:

  1. 记录亚行输出
  2. grep 日志中的关键字

shell 脚本中的代码是:

#!bin/bash

function punch() {
  "$@" | tee ${WORKSPACE}/adb_output.log
  [[ -z "$(grep 'FAILURES!!!' ${WORKSPACE}/adb_output.log)" ]] || exit 1
}

punch adb shell uiautomator runtest myTest.jar -c com.myTest.TestClass1
punch adb shell uiautomator runtest myTest.jar -c com.myTest.TestClass2
...
于 2013-08-09T15:43:15.870 回答
1

您需要检查您正在运行的每个 adb 语句的退出代码,然后再进行下一个

此处的这篇文章详细介绍了使用 bash检查退出代码有效地检查多个命令的 Bash 退出状态

其中包括这个(为你的例子而改变)

function test {
    "$@"
    status=$?
    if [ $status -ne 0 ]; then
        echo "error with $1"
        exit "$status"
    fi
    return $status
}

test adb shell uiautomator runtest myTest.jar -c com.myTest.TestClass1
test adb shell uiautomator runtest myTest.jar -c com.myTest.TestClass2

您还可以通过在脚本的第一行添加 shebang 来告诉 Jenkins 使用 bash

#!/bin/bash
于 2013-08-07T23:17:44.227 回答