сборка Jenkins uiautomator всегда зеленая

Поэтому я определил множество классов UiAutomatorTestCase, каждый из которых имеет максимум 1 или 2 теста. Затем я использую сценарий Shell на 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.

одна из двух (1/2) проблем, которые у меня есть, заключается в том, что со сборками Jenkins не имеет значения, если какой-либо из этих тестов не пройден, Jenkins всегда отображается зеленым цветом, мне нужно, чтобы Jenkins остановился и показал красный для сборки.

другая (2/2) проблема заключается в том, что если приложение падает в одном из тестов, скажем, TestClass2, скрипт попытается продолжить выполнение. Каким будет лучший способ остановить скрипт?

Какие-либо предложения? Спасибо


person Arzath    schedule 07.08.2013    source источник


Ответы (2)


Благодаря @KeepCalmAndCarryOn и Даниэлю Беку я решил свою проблему двумя шагами:

  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
...
person Arzath    schedule 09.08.2013

Вам нужно проверить код выхода каждого оператора adb, который вы используете, прежде чем переходить к следующему.

В этом посте подробно описывается проверка кодов выхода с помощью 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

Вы также можете указать Дженкинсу использовать bash, добавив shebang в первую строку вашего скрипта.

#!/bin/bash
person KeepCalmAndCarryOn    schedule 07.08.2013
comment
@KeepCalAndCarryOn Спасибо за ответ, но я получаю ОШИБКИ!!! Выполнено тестов: 1, сбоев: 0, ошибок: 1 INSTRUMENTATION_STATUS_CODE: -1 + s=0 + '[' 0 -ne 0 ']' + return 0 Я также убрал статус выхода $status внутри предложения if. Возможно, в этом контексте $1 — это только adb (что объясняет возврат 0)? - person Arzath; 08.08.2013