2011-12-09 105 views
2

我有一些JUnit測試使用當前的Display來實例化一些控件(例如TreeViewer)。本地工作正常,沒有問題。當我提交這些測試並且jenkins運行測試時,對於使用Display的每個測試,我都會得到一個失敗的測試。運行使用SWT顯示的JUnit測試在Jenkins上失敗

我的單元測試使用以這種方式顯示變量:

@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(也懶得檢查採取截圖,它不工作)

  • 它都應該歸結爲這兩個步驟

  • 添加一個執行shell在啓動測試之前構建動作metacity -replace -sm-disable &

查看鏈接的博客文章的截圖和更多詳細信息。

0

你可以嘗試從您的terminnal 「xhost的+」 以下兩件事情,

  1. 執行命令 「xhost的」 或。

  2. 從jenkins終端執行命令「xhost」或「xhost +」。