10

Próbuję zautomatyzować testowanie aplikacji JavaFX 2 działającej na platformie Java 7u6 ze zintegrowanym językiem JavaFX 2.2. W tym celu zbudowałem i zintegrowałem Jemmy3 i JemmyFX w moim środowisku kompilacji. Prosty test dymu działa na wszystkich odpowiednich systemach operacyjnych.Jak przetestować JavaFX 2 w środowisku bezgłowym?

Jako następny krok chcę przeprowadzić testy w ramach ciągłego procesu wdrażania. Ponieważ bieżący serwer CI działa na serwerze OpenSUSE, który nie jest oficjalnie obsługiwany przez JavaFX, skonfigurowałem instalację serwera Ubuntu na maszynie wirtualnej i zainstalowałem gtk2.
Aby zaradzić brakowi pełnowartościowego systemu okienkowego, próbowałem uruchomić testy zarówno na Xvnc i Xvfb, ale bezskutecznie.

Na Xvnc, testy niepowodzeniem z

Prism ES2 Error - nInitialize: glXChooseFBConfig failed 

natomiast na Xvfb, dają mi

Xlib: extension "RANDR" missing on display ":10". 

blog post zaproponował zainstalowanie gtk-engines-pixbuf złagodzić drugi problem, ale to zmieniło tylko numer wyświetlacza w komunikacie o błędzie.

Teraz mogę przywołać wiedzę JavaFX o StackOverflow i poprosić

  • Czy wiesz jak rozwiązać powyższe błędy?
  • Czy pomyślnie przeprowadzono test JavaFX 2 lub interakcję z robotem na serwerze (bezgłowym) CI?
  • Jak skonfigurowałeś ten system, aby działał?
+1

Zgaduję, że wsparcie dla testowania JavaFX (bezgłowego) serwera JavaFX jest niedostępne aż do JavaFX 8 (na podstawie [te] (http://javafx-jira.kenai.com/browse/RT-20494) [ jiras] (http://javafx-jira.kenai.com/browse/RT-20510)). Może Sergey z zespołu JavaFX QA może wiedzieć więcej, czasami przegląda tę stronę Q/A. – jewelsea

+0

O ile Siergiej nie pojawi się z zupełnie inną odpowiedzią, byłbym skłonny zaakceptować to jako fakt, jeśli złożysz to jako odpowiedź. –

+0

OK, zrobiłem odpowiedź. – jewelsea

Odpowiedz

6

Wsparcie (bez głowy) testowanie serwera CI JavaFX nie jest dostępna aż JavaFX 8.

odpowiedzi na podstawie informacji zawartych w tych JavaFX emisji śledzenie rekordów:

  • JDK-8088651 „Needs Toolkit Headless szklane do połączenia z testami jednostkowymi Quantum i Prism "
  • JDK-8091286" Quantum potrzebuje testów bezgłowych i czołowych ").

Aktualizacja 08 stycznia 2015

prowadzi link JavaFX śledzenia rekordy problem nie były realizowane dla Java 8 i zostały przypisane do Java 9.

Java 8 Kod źródłowy obejmuje obecnie minimalny rendering silnik o nazwie Monocle, który zapewnia renderowanie bezgłowe (i renderowanie dla różnych innych platform docelowych) dla komponentów JavaFX. Nigdy nie używałem Monocle i nie mogę dostarczyć szczegółowych instrukcji, jak go używać do renderowania bezgłowego. Wydaje mi się, że używam Monocle, obecnie musisz wykonać niestandardową kompilację JavaFX ze źródła (jak sądzę, Monocle jest zwykle dostarczany tylko we wbudowanych wersjach JavaFX, co nie jest standardową wersją JavaFX, która jest dostarczana ze środowiskiem Java środowiska wykonawczego komputera stacjonarnego i środowisk JDK) .

Informacje o Monocle są dostępne na stronie JavaFX wiki.

Chociaż renderowanie bezgłowe jest zapewniane przez Monocle, nie sądzę, że używanie Monocle do renderowania bezgłowego jest oficjalnie wspierane przez Oracle (chociaż nie sądzę, że bezgłowe renderowanie JavaFX w jakiejkolwiek formie jest oficjalnie obsługiwane, więc sądzę, że jeśli Monocle działa dobrze dla ciebie, używaj go z całą pewnością).

Bezgłowe renderowanie w Monocle jest implementacją renderowania oprogramowania, więc wykonanie niektórych operacji graficznych może być wolniejsze niż standardowe przyspieszenie sprzętowe JavaFX w środowisku graficznym.

Mogą istnieć inne metody zezwalające na uruchamianie JavaFX w bezgłowym środowisku, którego nie znam. Jeśli masz wątpliwości, zapytaj programistów JavaFX o numer openjfx-dev mailing list.

Jeśli pracujesz pod Linuksem, używanie Xvfb zgodnie z sugestią Jana Zarczykowa jest prawdopodobnie dobrym rozwiązaniem i prawdopodobnie lepiej będzie używać Monocle.

+0

Czy ta odpowiedź może zostać zaktualizowana teraz, gdy JavaFX 8 jest dostępna? –

+0

Zaktualizowana odpowiedź, aby podać aktualne informacje, jakie znam. – jewelsea

+0

[Ta odpowiedź] (http://stackoverflow.com/a/29919290/1212960) sugeruje, że Monocle jest dostępny jako dodatkowa zależność. –

12

Miałem podobny problem - testowanie JUnit w bezgłowym środowisku z Mavenem.

Nie używamy JemmyFX. Mamy po prostu bardzo proste testy, które używają regułę JUnit podobny do tego: https://gist.github.com/andytill/3835914 (jest to wymagane do kodu, który wykorzystuje Platform.runLater (...))

obecnej wersji JavaFX (dostarczony z JDK 1.7. 0-21) wydaje się działać w Xvfb na Ubuntu 12.04 bez uruchomionego Xserver:

  1. Xvfb :99
  2. DISPLAY=:99 mvn clean install
+0

Dzięki, to działa. – gontard

Powiązane problemy