我试图在构建过程中通过无头Eclipse执行junit测试。使用以下命令从Ant脚本调用单元测试:
eclipsec.exe -noSplash -application org.eclipse.ant.core.antRunner -data "C:SomeDirectory" -buildfile "C:PathTotests.xml"
这工作得很好,除非Ant脚本由于任何原因(由于单元测试失败,或者由于单元测试在上游抛出异常而通过显式任务失败)需要失败。在任何一种情况下,eclipsec
都会弹出一个对话框,报告"发生了错误"。这伴随着一个例外。堆栈跟踪的顶部,如果它是相关的,是:
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.ant.core.AntRunner.run(AntRunner.java:513)
at org.eclipse.ant.core.AntRunner.start(AntRunner.java:600)
我真的不关心Ant脚本或Eclipse失败的原因——这就是日志记录的原因——但是与它一起弹出的对话框是不可接受的,因为它会挂起我们的持续集成系统,同时等待看不见的用户来点击它。
是否有任何方法可以抑制此对话框?是否有任何方法我可以围绕这个对话框,不需要一个真正的用户来响应它?
额外的信息:
Eclipse版本:Indigo(截至昨天的最新版本)。内部的Ant和JUnit
Java Version: JDK 6.0_30 32bit
操作系统:Windows (7 and Server 2003)
如果您正在使用ErrorDialog的子类,则可以将静态的AUTOMATED_MODE设置为true。
显示(请参阅下面的注释)错误来自包装程序exclipsec。看看这里的命令行选项:http://help.eclipse.org/indigo/topic/org.eclipse.platform.doc.isv/reference/misc/runtime-options.html指定——launcher。命令行中的suppresserror将避免此对话框(注意双破折号)。