在 Headless 环境中测试 Swing 元素 (gitlab CI)
Testing Swing elements in a Headless Environment (gitlab CI)
我有一个使用 gitlab 的 CI 的 gradle 项目,不幸的是使用任何 Swing 类 结果:
java.awt.AWTException:无头环境
我在 Easiest way to unit test SWT and Swing apps in a headless environment? 找到了一个提到使用 Xvfb 的答案,这似乎可行,但没有详细说明,因为有一个特定于工具的更简单的选项。如果 Xvfb 可以工作,我的项目中需要如何配置它?我找不到 gitlab/gradle 的任何资源。是否有特定于 gitlab 的更简单的选项?
所以我找到了一个行之有效的解决方案。我最终创建了自己的 Docker 图片:
FROM alpine:3.10
RUN apk update
RUN apk --no-cache add openjdk11 --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community
RUN apk add xvfb-run
然后我只需要更新我的 .gitlab-ci.yml 即可使用该图像:
image: jeffreydm/xvfb-java:v0.1
最后,我更新了我的脚本:
build:
stage: build
script:
- ./gradlew build
至:
build:
stage: build
script:
- xvfb-run ./gradlew build
我有一个使用 gitlab 的 CI 的 gradle 项目,不幸的是使用任何 Swing 类 结果:
java.awt.AWTException:无头环境
我在 Easiest way to unit test SWT and Swing apps in a headless environment? 找到了一个提到使用 Xvfb 的答案,这似乎可行,但没有详细说明,因为有一个特定于工具的更简单的选项。如果 Xvfb 可以工作,我的项目中需要如何配置它?我找不到 gitlab/gradle 的任何资源。是否有特定于 gitlab 的更简单的选项?
所以我找到了一个行之有效的解决方案。我最终创建了自己的 Docker 图片:
FROM alpine:3.10
RUN apk update
RUN apk --no-cache add openjdk11 --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community
RUN apk add xvfb-run
然后我只需要更新我的 .gitlab-ci.yml 即可使用该图像:
image: jeffreydm/xvfb-java:v0.1
最后,我更新了我的脚本:
build:
stage: build
script:
- ./gradlew build
至:
build:
stage: build
script:
- xvfb-run ./gradlew build