Gradle test - вывести stdout / stderror для неудачных тестов - PullRequest
1 голос
/ 03 мая 2020

Я представляю конвейер действий Github в существующий проект для запуска ./gradlew test. Неудивительно, что я сталкивался со случаями, когда тесты проходят локально, но не на сборочной машине, из-за различных вещей, таких как несовпадение часовых поясов.

По умолчанию gradle не печатает stdout для этих тестов. Я знаю, что это будет сделано, если пройдено --info, однако набор тестов имеет размер около 1500 тестов, что делает вывод конвейера чрезвычайно многословным (на самом деле браузер задерживается, если я включаю его для полного набора и пытаюсь просмотреть полученный результат в Github).

Чтобы исправить начальные проблемы с прорезыванием зубов, я прибегнул также к выбору наборов, которые не работают (например, ./gradlew test --tests "foo.bar.AppTest" --info). Хотя это немного ошибочно. Есть ли способ сказать gradle распечатать содержимое стандартного вывода только для неудачных тестов? Это сделало бы меня в лучшем положении вперед!

1 Ответ

2 голосов
/ 04 мая 2020

Эта страница содержит то, что вы ищете.

Она сводится к настройке тестового задания, например, так:

test {
  testLogging {
    // set options for log level LIFECYCLE
    events "failed"
  }
}

Есть и другие варианты управляйте ведением журнала, если вы читаете эту страницу.


Поскольку это, вероятно, требуется только для действий github, вы можете использовать переменную окружения CI , чтобы разрешить ваши конфигурации только в средах CI :

test {
  doFirst {
    if (System.getenv('CI')) {
      testLogging {
        // set options for log level LIFECYCLE
        events "failed"
      }
    }
  }
}

Другие CI провайдеры также задают эту переменную среды

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...