2011-12-15 2 views
4

빌드 프로세스에서 헤드리스 일식 (headless eclipse)을 통해 JUnit 테스트를 실행하려고합니다. 단위 테스트는이 명령으로, Ant 스크립트에서 호출됩니다 Ant 스크립트는 (중 명시 적 작업을 통해 단위 테스트가 실패하거나 때문에 어떠한 이유로 실패 필요하지 않는 한 이것은 잘 작동헤드리스 모드에서 eclipse를 실행할 때 오류 메시지 대화 상자를 사용할 수 없게 설정합니까?

eclipsec.exe -noSplash -application org.eclipse.ant.core.antRunner -data "C:\SomeDirectory" -buildfile "C:\Path\To\tests.xml"

단위 테스트가 업스트림에서 예외를 던 졌기 때문에). 두 경우 모두 eclipsec은 "오류가 발생했습니다."라는 대화 상자를 표시합니다. 이것은 예외가 수반됩니다. 이 관련된 경우 스택 추적의 상단은이다 : 정말 Ant 스크립트 또는 일식이 실패하든 상관하지 않습니다

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) 

- 즉 로깅을위한 기능 -하지만 대화 상자가 보이지 않는 사용자가 그것을 클릭 할 때까지 기다리는 동안 우리의 지속적인 통합 시스템을 멈추게하기 때문에 그것은 받아 들일 수 없다.

이 대화 상자를 표시하지 않을 수있는 방법이 있습니까? 실제 사용자가 응답하지 않아도되는이 대화 상자를 해결할 수있는 방법이 있습니까?

추가 정보 : Eclipse 버전 : 인디고 (최신 어제). Ant와 내부의 JUnit. Java 버전 : JDK 6.0_30 32bit OS : Windows (7 및 Server 2003)

답변

5

ErrorDialog의 하위 클래스를 사용하는 경우 true로 설정할 수있는 AUTOMATED_MODE라는 정적 변수가 있습니다.

오류가 래퍼 프로그램 인 exclipsec에서 나왔습니다 (아래 설명 참조). 명령 행 옵션보기 : http://help.eclipse.org/indigo/topic/org.eclipse.platform.doc.isv/reference/misc/runtime-options.html 명령 행에서 --launcher.suppressErrors를 지정하면이 대화 상자가 표시되지 않습니다 (이중 대시 참고).

+0

유망 해 보였지만 적용 방법을 모르거나이 경우에는 작동하지 않습니다. JUnit 테스트에서이 새로운 설정을 시도했지만 실패했을 경우 Eclipse 대화 상자가 표시되지 않습니다. 오류 억제는 Ant 레이어 또는 Eclipse 레이어에서 발생해야하지만 어떤 작업을 수행할지 또는 어떻게 수행할지 모릅니다. –

+0

언제 일어날 지, 스택 덤프 (리눅스에서는 kill -3)가 발생하여 정확히 어떤 대화가 일어나는지 알 수 있습니다. ErrorDialog의 하위 클래스가 아닐 수도 있습니다 (아마 그렇지 않을 수도 있습니다). 이 경우 스택 트레이스에서 어떤 일이 일어나고 있는지보고 자신의 코드를 추가하여 대화 상자가 표시되지 않도록해야합니다. –

+0

리눅스 (및 아마도 Mac)의 또 다른 대안은 가상 프레임 버퍼를 사용하고 DISPLAY를 그 (xvfb)로 리디렉션하는 것입니다. 나는 Windows에 상응하는 것을 모른다. –

관련 문제