如何为我在 Java 上编写的硒测试增加 travis-ci 的超时时间?

Posted

技术标签:

【中文标题】如何为我在 Java 上编写的硒测试增加 travis-ci 的超时时间?【英文标题】:How to increase timeout in travis-ci for my selenium tests written on java? 【发布时间】:2015-07-02 10:16:45 【问题描述】:

我在 java 上编写了一个测试(在本地机器上通过,测试运行大约 30 分钟),我需要增加 travis-ci 中的超时,我可以通过更改 .tavis.yml 来更改超时吗? 这是我的 .tavis.yml 文件:

language: java

cache: apt

before_install:
  - sudo apt-get update -qq
  - sudo apt-get install -qq default-jdk maven

env:
  - JAVA_HOME=/usr/lib/jvm/java-6-openjdk-amd64

script:
  - travis_wait mvn package -Dtestng=test.xml

我问是因为我在 travis 上有一个错误:

Timeout (20 minutes) reached. Terminating "mvn package -Dtestng=test.xml"

那么,我可以选择更改超时时间吗?可能我需要写一些东西到 .tavis.yml 吗?谢谢你。

【问题讨论】:

【参考方案1】:

您可以通过修改脚本命令来增加超时。例如,将超时时间增加到半小时:

  - travis_wait 30 mvn package -Dtestng=test.xml

请参阅 Mor 的回答,了解不会“挂起”构建输出 30 分钟的绝佳替代方案。

【讨论】:

【参考方案2】:

您的测试似乎没有产生任何输出,这通常会导致 10 分钟后超时。

但是,由于您在构建命令前加上 travis_wait,因此超时会增加到 20 分钟。

我们构建系统中的 shell 环境提供了一个函数来帮助解决这个问题,至少持续 10 分钟以上。

travis_wait 在 20 分钟内每分钟向构建日志写入一个短行,从而延长了您的命令必须完成的时间。

仔细检查您的测试是否挂起。

【讨论】:

输出是什么意思?你的意思是 System.out.println()? maven 或您的代码打印到标准输出的任何内容。 显然travis_wait 会缓冲所有输出,直到命令完成执行,这不太理想,因为这意味着如果您的构建需要很长时间,那么看到错误也需要很长时间出现。【参考方案3】:

我找到了适合我的以下解决方案taken from a GitHub Issue:

script:
  - .travis/test.sh

test.sh 看起来像这样:

# send the long living command to background
./long-running-operation.sh &

# Constants
RED='\033[0;31m'
minutes=0
limit=3

while kill -0 $! >/dev/null 2>&1; do
  echo -n -e " \b" # never leave evidences!

  if [ $minutes == $limit ]; then
    echo -e "\n"
    echo -e "$REDTest has reached a $minutes minutes timeout limit"
    exit 1
  fi

  minutes=$((minutes+1))

  sleep 60
done

exit 0

【讨论】:

以上是关于如何为我在 Java 上编写的硒测试增加 travis-ci 的超时时间?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 DirectoryStream 编写 junit 测试

不一致的硒网格错误

Spring Boot 应用程序的构建规范

如何为反应组件提供 Id 或 Attribute

如何为 Java 库编写黄瓜验收

使用 Python 在 Qt 上编写的自动测试应用程序