问题 假X服务器进行测试?


在工作中,我们完全测试GUI组件。问题在于,当测试套件运行时,弹出各种组件,窃取焦点或使其无法继续工作。我想到的第一件事是Xnest,但我想知道是否有一个更优雅的解决方案来解决这个问题。


6829
2018-01-14 15:42


起源



答案:


我认为你需要做的就是让你的测试运行在与你正在使用的显示器不同的显示器上。

当我们将TeamCity代理移动到EC2时,我们必须找到在无头Linux服务器上运行UI单元测试的解决方案。我找到了一种方法来做到这一点 博客文章,其中概述了如何使用Xvfb。

就我而言,我所要做的就是:

  • yum install xorg-x11-server-Xvfb
  • Xvfb :100 -ac 运行服务器。我将此添加到我的EC2代理上的rc.local文件中,以便在机器启动时启动它。
  • 然后我补充说 env.DISPLAY :100 到我的TeamCity构建配置

10
2018-01-14 16:17



我尝试了你的解决方案,但遗憾的是我的测试因分段错误而崩溃。我使用了很多东西,特别是Qt和OpenGL。你是否知道任何可能在标准X服务器上工作但在Xvfb上失败的东西? - Stefano Borini
@StefanoBorini不幸的是没有。我的理解是它应该像一个“真正的”X服务器,但当然可能存在实现问题,就像任何事情一样。一个快速的谷歌确实发现了这个错误: bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/296230  请注意,解决方法是使用-extension GLX启动Xvfb - sharakan
我明天会试一试。谢谢。你非常乐于助人。 - Stefano Borini


答案:


我认为你需要做的就是让你的测试运行在与你正在使用的显示器不同的显示器上。

当我们将TeamCity代理移动到EC2时,我们必须找到在无头Linux服务器上运行UI单元测试的解决方案。我找到了一种方法来做到这一点 博客文章,其中概述了如何使用Xvfb。

就我而言,我所要做的就是:

  • yum install xorg-x11-server-Xvfb
  • Xvfb :100 -ac 运行服务器。我将此添加到我的EC2代理上的rc.local文件中,以便在机器启动时启动它。
  • 然后我补充说 env.DISPLAY :100 到我的TeamCity构建配置

10
2018-01-14 16:17



我尝试了你的解决方案,但遗憾的是我的测试因分段错误而崩溃。我使用了很多东西,特别是Qt和OpenGL。你是否知道任何可能在标准X服务器上工作但在Xvfb上失败的东西? - Stefano Borini
@StefanoBorini不幸的是没有。我的理解是它应该像一个“真正的”X服务器,但当然可能存在实现问题,就像任何事情一样。一个快速的谷歌确实发现了这个错误: bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/296230  请注意,解决方法是使用-extension GLX启动Xvfb - sharakan
我明天会试一试。谢谢。你非常乐于助人。 - Stefano Borini