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

使用gitlab ci进行GUI测试(java swing)时出现无头异常,java,swing,unit-testing,gitlab-ci,headless,Java,Swing,Unit Testing,Gitlab Ci,Headless,我有一个运行gitlab runner的虚拟服务器。 我现在添加了一些GUI单元测试,这些测试在我的pc上运行良好,但在虚拟服务器上运行不好 它总是以以下方式退出: java.awt.HeadlessException: No X11 DISPLAY variable was set, but this program performed an operation which requires it. 你知道如何使用gitlab ci来运行它吗 编辑: 我的虚拟服务器正在运行centos 7

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

它总是以以下方式退出:

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

编辑2: 我添加了建议的无头选项:

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"

现在我又遇到了无头异常…

您尝试使用本文中的xvfb程序

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


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

您需要启用无头模式:

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

我终于找到了解决办法

我已经创建了一个DOCKER映像,用于GUI测试(使用xvfb,感谢vbuhlev):

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

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

可能重复:看起来像解决方案。但是,我找不到gitlab-ci的正确配置。ymlYou可以在travis外部创建xvfb缓冲区,并在travis中设置ENV变量。请参阅Edit2。没有帮助:-(在这里阅读JavaSE无头模式限制:我得到java.awt.HeadlessException。有帮助吗?