我有一个运行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"
现在我再次得到无头的例外......
答案 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"