使用gitlab-ci进行GUI测试(java swing)时的无头异常

时间:2017-11-30 14:21:14

标签: java swing unit-testing gitlab-ci headless

我有一个运行gitlab运行器的虚拟服务器。 我现在已经添加了一些GUI单元测试,这些测试在我的电脑上运行良好但在虚拟服务器上运行不正确。

总是退出:

java.awt.HeadlessException: 
No X11 DISPLAY variable was set, but this program performed an operation which requires it.

知道如何使用gitlab-ci运行吗?

编辑:

我的虚拟服务器正在运行centos 7

这是我现在的.gitlab-ci.yml

image: kaiwinter/docker-java8-maven
#maven:3-jdk-7

before_script:
  - "Xvfb :99 &"
  - "export DISPLAY=:99"

maven_build:
  stage: build
  script:
  - "mvn clean package"
  - "cat target/site/jacoco/index.html"

现在,headlessexception已经消失,但基本上所有单元测试都因为awt异常而失败,例如: 无法初始化类java.awt.image.IndexColorModel

EDIT2: 我按照建议添加了无头选项:

image: kaiwinter/docker-java8-maven
#maven:3-jdk-7

before_script:
  - "Xvfb :99 &"
  - "export DISPLAY=:99"

maven_build:
  stage: build
  script:
  - "mvn clean package -Djava.awt.headless=true"
  - "cat target/site/jacoco/index.html"

现在我再次得到无头的例外......

3 个答案:

答案 0 :(得分:1)

您尝试使用 xvfb 计划,例如此帖http://elementalselenium.com/tips/38-headless

我使用xvfb从文本终端运行浏览器。你的情况基本相同。

问题是您的程序希望在窗口环境中运行,但是您是从文本终端运行它。

答案 1 :(得分:0)

您需要启用无头模式:

  maven_build:
  stage: build
  script:
  - "mvn clean package -Djava.awt.headless=true"

答案 2 :(得分:0)

最后我找到了解决方案!

我已经创建了一个DOCKER图像,它准备用于GUI测试(使用xvfb,感谢vbuhlev): https://github.com/thorstenwagner/docker-java8-maven

在.gitlab-ci.yml中,我添加了以下几行:

before_script:
  - "Xvfb :99 &"
  - "export DISPLAY=:99"