首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JUnit在使用java.awt/javax.swing的程序中从HeadlessException失败

JUnit在使用java.awt/javax.swing的程序中从HeadlessException失败
EN

Stack Overflow用户
提问于 2016-04-29 16:47:24
回答 1查看 1.3K关注 0票数 1

我有一个JUnit项目,我需要为它创建一个ant任务和一些测试。测试不应依赖于环境。将要测试的程序使用了许多来自java.awtjavax.swing的图形用户界面相关内容。我尝试过各种设置和修改,但由于某种原因,测试总是死于java.awt.HeadlessException。我已经找到了一个解决这个问题的办法,没有运气-任何帮助都将不胜感激。

(我在CentOS Linux release 7.2.1511 (Core)上使用CentOS Linux release 7.2.1511 (Core))

我已经将下面的代码添加到我的build.xml中:

代码语言:javascript
复制
  <target name="test" depends="test-compile">
    <junit>
      <jvmarg value="-Djava.awt.headless=true"/>
      <sysproperty key="java.awt.headless" value="true"/>
      <classpath>
        <path refid="junit.class.path"/>
        <path refid="libs.class.path"/>
        <pathelement location="${build.test.path}"/>
      </classpath>
      <batchtest>
        <fileset dir="${build.test.path}">
          <include name="**/*Test*"/>
        </fileset>
      </batchtest>
      <formatter type="brief" usefile="false"/>
    </junit>
  </target>

这是JUnit测试的输出:

代码语言:javascript
复制
[junit] Test org.sampleprogram.MyAppTest FAILED
[junit] Testsuite: org.sampleprogram.MySomethingTest
[junit] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.311 sec
[junit]
[junit] Testcase: testSample(org.sampleprogram.MySomethingTest):    Caused an ERROR
[junit] null
[junit] java.lang.ExceptionInInitializerError
[junit]     at org.sampleprogram.MySomething.initStaticProperties(Unknown Source)
[junit]     at org.sampleprogram.MySomething.<clinit>(Unknown Source)
[junit]     at org.sampleprogram.MySomethingTest.testSample(Unknown Source)
[junit] Caused by: java.awt.HeadlessException
[junit]     at sun.awt.HeadlessToolkit.getMenuShortcutKeyMask(HeadlessToolkit.java:236)
[junit]     at org.fife.ui.rtextarea.RTADefaultInputMap.getDefaultModifier(Unknown Source)
[junit]     at org.fife.ui.rtextarea.RTADefaultInputMap.<init>(Unknown Source)
[junit]     at org.fife.ui.rsyntaxtextarea.RSyntaxTextAreaDefaultInputMap.<init>(Unknown Source)
[junit]     at org.fife.ui.rsyntaxtextarea.RSyntaxTextAreaUI.getRTextAreaInputMap(Unknown Source)
[junit]     at org.fife.ui.rtextarea.RTextAreaUI.installKeyboardActions(Unknown Source)
[junit]     at javax.swing.plaf.basic.BasicTextUI.installUI(BasicTextUI.java:805)
[junit]     at org.fife.ui.rtextarea.RTextAreaUI.installUI(Unknown Source)
[junit]     at javax.swing.JComponent.setUI(JComponent.java:666)
[junit]     at javax.swing.text.JTextComponent.setUI(JTextComponent.java:328)
[junit]     at org.fife.ui.rtextarea.RTextAreaBase.setRTextAreaUI(Unknown Source)
[junit]     at org.fife.ui.rtextarea.RTextAreaBase.init(Unknown Source)
[junit]     at org.fife.ui.rtextarea.RTextArea.init(Unknown Source)
[junit]     at org.fife.ui.rsyntaxtextarea.RSyntaxTextArea.init(Unknown Source)
[junit]     at org.fife.ui.rtextarea.RTextAreaBase.<init>(Unknown Source)
[junit]     at org.fife.ui.rtextarea.RTextArea.<init>(Unknown Source)
[junit]     at org.fife.ui.rsyntaxtextarea.RSyntaxTextArea.<init>(Unknown Source)
[junit]     at org.sampleprogram.gui.TextArea.<init>(Unknown Source)
[junit]     at org.sampleprogram.MyApp.<clinit>(Unknown Source)
[junit]
[junit]
[junit] Test org.sampleprogram.MySomethingTest FAILED

如果我将headlessbuild.xml中更改为false,它仍然会失败,但结果会更改为:

代码语言:javascript
复制
[junit] Testsuite: org.sampleprogram.MyAppTest
[junit] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.471 sec
[junit]
[junit] Testcase: testSample(org.sampleprogram.MyAppTest):    Caused an ERROR
[junit] Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.
[junit] java.awt.AWTError: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.
[junit]     at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
[junit]     at sun.awt.X11GraphicsEnvironment.access$200(X11GraphicsEnvironment.java:65)
[junit]     at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:115)
[junit]     at java.security.AccessController.doPrivileged(Native Method)
[junit]     at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:74)
[junit]     at java.lang.Class.forName0(Native Method)
[junit]     at java.lang.Class.forName(Class.java:264)
[junit]     at java.awt.GraphicsEnvironment.createGE(GraphicsEnvironment.java:103)
[junit]     at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:82)
[junit]     at javax.swing.RepaintManager.<clinit>(RepaintManager.java:233)
[junit]     at javax.swing.JComponent.repaint(JComponent.java:4792)
[junit]     at java.awt.Component.repaint(Component.java:3313)
[junit]     at javax.swing.text.JTextComponent.setEditable(JTextComponent.java:1758)
[junit]     at javax.swing.text.JTextComponent.<init>(JTextComponent.java:309)
[junit]     at javax.swing.JTextArea.<init>(JTextArea.java:204)
[junit]     at javax.swing.JTextArea.<init>(JTextArea.java:140)
[junit]     at org.fife.ui.rtextarea.RTextAreaBase.<init>(Unknown Source)
[junit]     at org.fife.ui.rtextarea.RTextArea.<init>(Unknown Source)
[junit]     at org.fife.ui.rsyntaxtextarea.RSyntaxTextArea.<init>(Unknown Source)
[junit]     at org.sampleprogram.gui.SampleTextArea.<init>(Unknown Source)
[junit]     at org.sampleprogram.MyApp.<clinit>(Unknown Source)
[junit]     at org.sampleprogram.MyApp.initStaticProperties(Unknown Source)
[junit]     at org.sampleprogram.MyApp.<clinit>(Unknown Source)
[junit]     at org.sampleprogram.MyAppTest.testSample(Unknown Source)
[junit]
[junit]
[junit] Test org.sampleprogram.MyAppTest FAILED
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-29 17:12:53

它看起来像是来自sun.awt.HeadlessToolkitsun.awt.HeadlessToolkit,在无头模式(*)中使用的Toolkit总是会抛出这个异常:

代码语言:javascript
复制
public int getMenuShortcutKeyMask()
        throws HeadlessException {
        throw new HeadlessException();
    }

此方法由org.fife.ui.rtextarea.RTADefaultInputMap调用,因此无法按原样执行测试。

(*)

默认工具包创建 如果名为java.awt.headless的系统属性设置为true,则使用Toolkit的无头实现。使用Toolkit类的getDefaultToolkit()方法创建无头工具箱实例: Toolkit = Toolkit.getDefaultToolkit();

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36943630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档