在无头环境中对SWT和Swing应用程序进行单元测试的最简单方法是什么?

All*_*nde 14 junit swing swt headless

我正在为我正在进行的项目单元测试一些SWT和Swing代码,只要我从eclipse运行它们,测试运行正常.

一旦我在哈德森环境中运行它们就会失败,因为哈德森在无头模式下运行测试.

这样做的最佳方法是什么?仅请开源解决方案(因为该项目是开源的).

Pas*_*ent 24

你可以运行Xvfb(X虚拟帧缓冲区,一个在内存中执行所有图形操作的X11服务器),这很好用.

但是Hudson的Xvnc插件还有另一个解决方案.只需安装插件并选中作业配置屏幕中的复选框:

替代文字http://www.justinedelson.com/blog/wp-content/uploads/xvnc_box.jpg

然后,Hudson将自动启动Xvnc会话并将DISPLAY环境变量设置为适当的值,然后在构建完成时关闭会话.相比Xvfb方法的一个优点是,如果您同时构建多个Swing/SWT项目,则每个构建都有自己的X会话.这可能不是一个问题,但似乎是一个好主意.

在使用此插件之前,您显然必须安装Xvnc.不太明显(虽然明智)是你还必须设置密码.你这样做是通过运行:

$ vncpassword
Run Code Online (Sandbox Code Playgroud)

这必须以Hudson运行的同一用户身份完成.

  • 如果这样可行,这是我多年来看到的最好的技巧! (2认同)