2011-12-09 4 views
2

현재 몇 가지 컨트롤 (예 : TreeViewer)을 인스턴스화하기 위해 현재 디스플레이를 사용하는 몇 가지 JUnit 테스트가 있습니다. 로컬로 잘 작동하는데 문제가 없습니다. 이러한 테스트를 수행하고 젠킨스가 테스트를 실행하면 디스플레이를 사용하는 각 테스트에 대해 실패한 테스트가 표시됩니다.JUnit 실행 - Jenkins에서 SWT-Display를 사용하는 테스트가 실패합니다.

내 단위 테스트는 이러한 방식으로 표시 변수를 사용

@Test 
public void testUtils() { 
    Display display = Display.getCurrent(); 
    Shell shell = new Shell(display, SWT.NONE); 
    // org.eclipse.swt.widgets.Composite composite = new 
    // org.eclipse.swt.widgets.Composite(
    // shell, SWT.NONE); 
    TreeViewer viewer = new TreeViewer(shell, SWT.MULTI | SWT.H_SCROLL 
      | SWT.V_SCROLL); 

오류 로그 젠킨스가 생성

Time elapsed: 0.13 sec <<< ERROR! 
org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed] 
    at org.eclipse.swt.SWT.error(SWT.java:4109) 
    at org.eclipse.swt.widgets.Display.createDisplay(Display.java:902) 
    at org.eclipse.swt.widgets.Display.create(Display.java:890) 
    at org.eclipse.swt.graphics.Device.<init>(Device.java:154) 
    at org.eclipse.swt.widgets.Display.<init>(Display.java:499) 
    at org.eclipse.swt.widgets.Display.<init>(Display.java:490) 
    at org.eclipse.swt.widgets.Display.getDefault(Display.java:1693) 
    at org.eclipse.swt.widgets.Shell.<init>(Shell.java:260) 
    at org.eclipse.swt.widgets.Shell.<init>(Shell.java:253) 
    at 

난에 표시를 사용하고있는 방식에 문제가있는 것은 거기에 내 테스트? 내 로컬 컴퓨터에서 실행될 때 작동합니다.

답변

0

사용하는 방식은 나에게 좋을 것 같습니다. 이 오류는 서버가 Gnome을 실행하고 있지 않기 때문에 SWT가 요청할 때 디스플레이를 만들 수 없다는 것과 관련이 있습니다.

UPDATE는

난 그냥 당신이 더 자세히 run SWT UI tests on a headless server에해야 할 일을 설명하는 최근 블로그 게시물을 발견했다. 제공되는 단계가 허드슨을위한 것이지만, 젠킨스에도 적용 할 수 있어야합니다.

(작동하지 않으며, 스크린 샷을 확인하기 위해 귀찮게하지 않습니다) 빌드 동안

  • 확인 실행 Xvnc가를 :

    그것은 모든 이들 두 단계에로 요약한다

  • 추가 으로 테스트를 시작하기 전에 쉘을 실행 빌드 - metacity -replace -sm-disable &

스크린 샷 및 자세한 내용은 블로그 게시물을 참조하십시오.

0

당신은 "xhost를 +"당신의 terminnal에서 두 가지,

  1. 이 명령을 실행 "에 xhost"또는 다음 시도 할 수 있습니다.

  2. 젠킨스 터미널에서 "xhost"또는 "xhost +"명령을 실행하십시오.

관련 문제