You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解决无头Ubuntu上Jenkins GUI测试报错:设置默认屏幕分辨率

解决无头Ubuntu服务器上Jenkins GUI测试的屏幕分辨率问题

这个问题我之前帮不少开发者解决过——无头Ubuntu服务器上跑Jenkins GUI测试时,因为默认没有物理显示器,虚拟显示的分辨率太小,导致组件超出屏幕边界是很常见的情况。下面给你几个靠谱的解决办法:

方法一:用Xvfb手动创建高分辨率虚拟显示

Xvfb是虚拟X服务器,能在无头环境模拟显示器,步骤如下:

  1. 先安装Xvfb:
    sudo apt-get update && sudo apt-get install xvfb -y
    
  2. 启动一个指定分辨率的虚拟显示(这里用1920x1080,你可以根据测试需求调整):
    Xvfb :1 -screen 0 1920x1080x24 &
    
    这里:1是显示编号,x24代表24位颜色深度,足够覆盖大部分GUI场景。
  3. 让Jenkins进程识别这个虚拟显示,设置环境变量:
    export DISPLAY=:1
    
  4. 之后启动Jenkins,或者在Jenkins的构建步骤开头先执行上述export命令。

方法二:用Jenkins Xvfb插件简化配置

如果你不想手动敲命令,Jenkins的Xvfb插件能帮你自动化管理虚拟显示:

  1. 进入Jenkins的「插件管理」,搜索并安装Xvfb Plugin。
  2. 打开你的测试任务配置页面,找到「构建环境」区域,勾选「Start Xvfb before the build, and shut it down after」。
  3. 在「Screen size」输入框里设置分辨率,比如1920x1080x24,颜色深度选24即可。
  4. 保存配置后,下次构建时Jenkins会自动启动对应分辨率的虚拟显示,无需手动设置环境变量。

方法三:在测试代码里强制设置窗口大小

除了系统层面的虚拟显示设置,你还可以在测试代码里主动调整GUI窗口的大小,避免组件超出边界:
以你用到的AssertJ Swing为例,在初始化窗口时添加resize操作:

import org.assertj.swing.fixture.FrameFixture;
import java.awt.Dimension;

// 初始化你的主窗口
FrameFixture mainWindow = new FrameFixture(new YourMainApplicationFrame());
// 强制设置窗口大小为1920x1080
mainWindow.resizeTo(new Dimension(1920, 1080));
// 显示窗口
mainWindow.show();

额外注意事项

  • 如果你启动Jenkins时用了-Djava.awt.headless=true参数,记得把它改成-Djava.awt.headless=false,否则GUI测试会无法正常运行。
  • 分辨率不用设置得过大,够用就行——太大的话会占用更多服务器资源,1920x1080基本能覆盖绝大多数桌面应用的测试场景。

内容的提问来源于stack exchange,提问作者Sakshi Arora

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:08:37