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

Dav*_*ave 5 gwt headless maven

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

mvn clean test
Run Code Online (Sandbox Code Playgroud)

谢谢, - 戴夫

Chr*_*ian 5

您可以通过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>
...
Run Code Online (Sandbox Code Playgroud)

参考: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>
...
Run Code Online (Sandbox Code Playgroud)

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


and*_*rey 0

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

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

你可以做什么:

确保您在运行测试的 PC/服务器上安装了 X 窗口系统。如果您需要有关如何安装 Linux 的提示,只需点击 Google“安装 x window”即可。

安装Xvfb

sudo apt-get install Xvfb
(对于 Ubuntu Linux)或
百胜搜索 Xvfb
(对于 CentOS,要获取准确的包名称,然后 yum install ...)或任何适合您的 lunux 发行版

创建 xvfb.hosts 文件,其中包含 2 行,其中包含“localhost”和“servername.yourcompany.com”。将其存放在某处。

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

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

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

导出显示=:99

我不能确切地说如何做到这一点,因为我不知道你的计算配置。我已经在 CruiseControl 启动脚本和 Hudson 安装中设置了 DISPLAY。

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