2016-07-12 47 views
6

Mam prosty widok zarejestrowany normalnie w mojej wtyczce Eclipse (4.5.2) i działa on po uruchomieniu instancji Eclipse z wtyczką. Nadal działa w odpowiednim przypadku testowego, który ma następującą metodę:Wyjątek NullPointerException w 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"); 
} 

Jednak gdy uruchamiam ten sam test z Tycho (0,22, 0,24 lub 0,25), pojawia się następujący wyjątek:

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) 

kod Tycho jest prosta:

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

znalazłem this bug i kilka więcej, ale nic nie znalazłem wyjaśnienia, dlaczego to nie tylko w Tycha. I nie mogłem znaleźć niczego, jak to naprawić.

Co więc zrobiłem źle? Jak mogę to naprawić?

Odpowiedz

3

Zgaduję, że czegoś brakuje w testowym środowisku wykonawczym, które jest wymagane w pełnowymiarowym środowisku roboczym Eclipse i które dodaje środowisko PDE, ale Tycho tego nie robi. (Domyślnie Tycho dodaje tylko (przechodnie) zależnościami twoich eclipse-test-plugin do wykonywania testu.)

spróbuj dodać następujące wpisy do tycho-surefire-plugin wykonania:

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

ten powinien wyciągnąć wiele wtyczek do swojej testowy czas pracy, który może nie występować w inny sposób (np. org.eclipse.e4.core.di, a testy zwykle nie zależą bezpośrednio ani pośrednio).

Oczywiście powyższe działa tylko wtedy, gdy funkcja org.eclipse.e4.rcp jest częścią docelowej platformy.

+0

Gdyby ten sam problem, rozwiązanie zadziałało przy pierwszej próbie. Dziękuję Ci bardzo! –