2016-07-12 35 views
6

Ho una vista semplice registrata normalmente nel mio plug-in Eclipse (4.5.2), e funziona quando avvio un'istanza Eclipse con il plug-in. Ancora funziona nel caso di prova corrispondente, che ha il seguente metodo:NullPointerException in WorkbenchPage.busyShowView

@Before 
public void setUp() throws Exception { 
    IWorkbenchPage activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); 
    for (IViewReference viewReference : activePage.getViewReferences()) { 
     activePage.hideView(viewReference); 
    } 
    activePage.showView("org.acme.MyView"); 
} 

Tuttavia, quando si esegue lo stesso test con Tycho (0,22, 0,24 o 0,25), ottengo la seguente eccezione:

java.lang.NullPointerException: null 
    at org.eclipse.ui.internal.WorkbenchPage.busyShowView(WorkbenchPage.java:1271) 
    at org.eclipse.ui.internal.WorkbenchPage$12.run(WorkbenchPage.java:4238) 
    at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) 
    at org.eclipse.ui.internal.WorkbenchPage.showView(WorkbenchPage.java:4234) 
    at org.eclipse.ui.internal.WorkbenchPage.showView(WorkbenchPage.java:4214) 
    at org.acme.MyViewTest.setUp(MyViewTest.java:39) 

Il codice Tycho è semplice:

<plugin> 
    <groupId>org.eclipse.tycho</groupId> 
    <artifactId>tycho-surefire-plugin</artifactId> 
    <configuration> 
     <providerHint>junit4</providerHint> 
     <useUIHarness>true</useUIHarness> 
    </configuration> 
</plugin> 

ho trovato this bug e un paio di più, ma ho trovato che spiega perché fallirebbe solo in Tycho nulla. E non ho trovato nulla su come risolvere questo problema.

Quindi cosa ho sbagliato? Come lo aggiusto?

risposta

3

La mia ipotesi sarebbe che manchi qualcosa nel runtime di test richiesto dal workbench Eclipse in piena esecuzione e che PDE aggiunge, ma Tycho no. (Per impostazione predefinita, Tycho non fa che aumentare le transitivi) dipendenze del vostro eclipse-test-plugin (per il runtime di test.)

Prova ad aggiungere quanto segue al tycho-surefire-plugin esecuzione:

<configuration> 
    <!-- ... -> 
    <dependencies> 
    <dependency> 
     <artifactId>org.eclipse.e4.rcp</artifactId> 
     <type>eclipse-feature</type> 
    </dependency> 
    </dependencies> 
</configuration> 

Questo dovrebbe tirare un sacco di plugin nel vostro test di runtime che potrebbe non essere presente in altro modo (come org.eclipse.e4.core.di, in cui normalmente i test non dipendono direttamente o indirettamente).

Ovviamente, quanto sopra funziona solo se la funzione org.eclipse.e4.rcp fa parte della piattaforma di destinazione.

+0

Ha avuto lo stesso problema, la soluzione ha funzionato al primo tentativo. Grazie mille! –