最简单的方法单元的测试体和摆动的应用程序在一个无头的环境?
题
我想单元的测试的一些拉和摆动代码,用于一个项目,我正在和试验运行的现只要我运行他们自食。
当我运行他们在我的哈德逊环境中的失败,因为哈德逊的运行测试无头的模式。
什么是最好的方式这样做?开放源码解决方案只能请(由于项目开放源)。
解决方案
您可以运行的Xvfb (X虚拟帧缓存中,X11服务器执行在存储器中的所有的图形操作),这工作正常。
但是存在与Hudson的插件的Xvnc另一种解决方案。简单地安装插件并勾选在作业配置屏幕:
替代文字http://www.justinedelson.com/blog/可湿性粉剂内容/上传/ xvnc_box.jpg
哈德森将自动启动一个会话的Xvnc和DISPLAY环境变量设置为适当的值,然后关闭该会话的生成完成时。一个优点这有过的Xvfb方法是,如果你有多个摇摆/ SWT项目同步建设,每个版本都有自己的X会话。这可能不是在所有的问题,但它似乎是一个不错的主意。
使用这个插件之前,你显然必须有安装的Xvnc。什么是不太明显的(尽管明智的)是,你还必须设置一个密码。您可以通过运行做到这一点:
$ vncpassword
这有许多工作要做,如Hudson运行作为同一用户。
其他提示
尝试 Abbot Java GUI测试框架 和 SWTbot.至少SWTbot 应该能够做到这一点.
如果既没有提供一个无头的模式,然后 这篇文章 可能会给你一些想法,如何摆脱UI进行测试。
使用摇摆我倾向于整理东西,使得组件树可以不位于顶部的窗口来创建。这样做可以让你简单地创建一个单元测试和使用一个JPanel,作为您的顶级组件。有一定的你不能测试的东西,如聚焦和参与创建帧用于正常操作的任何逻辑,但绝大多数可以进行测试。
您可能想看看进入FEST库,使生活更轻松无论你去无头与否,它看起来很不错:的 http://fest.easytesting.org/swing/wiki/pmwiki.php
我确信我这里之前张贴了这个,不知道发生了什么事吧。
Cacio允许运行Swing应用程序无头。
我不知道SWT,但与Swing你不能。一个窗口的任何实例化(的JFrame,JDialog的,等等),即使它永远不会设置为可见将在无头模式(JDK 5)炸毁。我们的确在无头的模式不运行,并安装的Xvfb 提供实际上不具有的窗安装真实窗口系统。
您可以尝试的 RedDeer 测试框架 https://github.com/jboss-reddeer/reddeer
•用于运行在詹金斯CI环境试验(哈德森等)支持