1

そこで、多くの UiAutomatorTestCase クラスを定義しました。各クラスには、最大で 1 つまたは 2 つのテスト ケースがあります。次に、Jenkins でシェル スクリプトを使用して、これらのテスト ケースを一連のテストに紐付けます。次に例を示します。

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.

私が抱えている 2 つ (1/2) の問題の 1 つは、Jenkins ビルドでは、これらのテストのいずれかが失敗してもかまわないということです。Jenkins は常に緑色で表示されます。Jenkins を停止して、ビルドに赤色を表示する必要があります。

もう 1 つの (2/2) 問題は、アプリが TestClass2 などのテストの 1 つでクラッシュした場合、スクリプトがピックアップして実行を継続しようとすることです。スクリプトを停止させる最良の方法は何ですか?

助言がありますか?ありがとう

4

2 に答える 2

2

@KeepCalmAndCarryOn と Daniel Beck のおかげで、私は 2 つのステップで問題を解決しました。

  1. ログ adb 出力
  2. ログからキーワードをgrepする

シェル スクリプトのコードは次のようになります。

#!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

スクリプトの最初の行にシバンを追加して、Jenkins に bash を使用するように指示することもできます。

#!/bin/bash
于 2013-08-07T23:17:44.227 に答える