如何仅在Maven测试中设置GWT无头模式?

时间:2011-12-05 20:23:33

标签: gwt maven headless

我在Linux上使用Maven 3.0.3,GWT 2.4。我想在运行一些测试时设置GWT无头模式(例如设置-Djava.awt.headless = true)。我的问题是,如何通过Maven运行我的GWT测试时设置该参数?我通过运行

运行我的GWT测试
mvn clean test

谢谢, - 戴夫

2 个答案:

答案 0 :(得分:4)

您可以通过surefire插件传递配置参数。像:

<build>
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>2.14</version>
  <configuration>
    <systemPropertyVariables>
      <java.awt.headless>true</java.awt.headless>
    </systemPropertyVariables>
  </configuration>
</plugin>
...

参考:http://maven.apache.org/surefire/maven-surefire-plugin/examples/system-properties.html

此答案的旧版本使用了现在已弃用的“systemProperties”,您需要将其用于较旧的surefire版本:

<build>
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>2.14</version>
  <configuration>
    <systemProperties>
      <java.awt.headless>true</java.awt.headless>
    </systemProperties>
  </configuration>
</plugin>
...

有关更多配置选项,请查看Surefire手册页: http://maven.apache.org/surefire/maven-surefire-plugin/examples/junit.html

答案 1 :(得分:0)

如果我猜对了,当应用程序无法显示GUI时,您正在无人参与模式(可能是Hudson或CruiseControl)上运行服务器上的测试。

还有另一种方法可以解决您的问题(假设您的目标是运行测试)。 我使用Xvfb - 一个X Windows系统虚拟帧缓冲X服务器(一种虚拟屏幕)。 可能更简单的是在需要时为应用程序提供屏幕,而不是学习如何强制它在无头模式下工作。 (特别是在我管理大约100个maven项目的情况下)

你能做什么:

确保在运行测试的PC /服务器上安装了X window系统。如果您需要提示如何为您的Linux安装做到这一点,请点击谷歌“安装x窗口”。

安装Xvfb

sudo apt-get install Xvfb
(适用于Ubuntu Linux)或
yum search Xvfb
(适用于CentOS,获取确切的软件包名称,然后安装yum ...)或任何适合您的lunux发行版

使用包含“localhost”和“servername.yourcompany.com”的2行创建xvfb.hosts文件。把它存放在某个地方。

nohup Xvfb :99 -auth xvfb.hosts > xvfb.log &

(或者将此命令设置为在服务器启动时运行)

不要忘记为运行测试的会话提供环境变量:

export DISPLAY=:99

我不知道该怎么做,因为我不知道你的计算配置。我已经在CruiseControl启动脚本和Hudson安装中设置了DISPLAY。

这对我来说很好,我不必关心我公司所有项目的任何类型的自动GUI测试。希望这会对你有所帮助。