我正在尝试在构建过程中通过无头Eclipse执行JUnit测试。使用以下命令从Ant脚本调用单元测试:
eclipsec.exe -noSplash -application org.eclipse.ant.core.antRunner -data "C:\SomeDirectory" -buildfile "C:\Path\To\tests.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版本:JDK 6.0_30 32位
操作系统:Windows(7和Server 2003)
答案 0 :(得分:6)
如果您正在使用ErrorDialog的子类,则可以将一个名为AUTOMATED_MODE的静态设置为true。
结果(参见下面的评论)错误来自包装器程序exclipsec。在这里查看命令行选项:http://help.eclipse.org/indigo/topic/org.eclipse.platform.doc.isv/reference/misc/runtime-options.html在命令行上指定--launcher.suppressErrors将避免此对话框(请注意双破折号)。