10

Tôi đang cố gắng tự động kiểm tra cho một ứng dụng JavaFX 2 chạy trên Java 7u6 với JavaFX tích hợp 2.2. Để kết thúc, tôi đã xây dựng và tích hợp Jemmy3JemmyFX vào môi trường xây dựng của mình. Một thử nghiệm khói đơn giản chạy trên tất cả các hệ điều hành có liên quan.Làm thế nào để kiểm tra JavaFX 2 trong môi trường không đầu?

Là bước tiếp theo, tôi muốn chạy thử nghiệm như là một phần của quy trình triển khai liên tục. Vì máy chủ CI hiện tại chạy trên OpenSUSE, không được JavaFX hỗ trợ chính thức, Tôi đã thiết lập cài đặt Ubuntu Server trong máy ảo và cài đặt gtk2.
Để khắc phục tình trạng thiếu hệ thống cửa sổ chính thức, tôi đã thử chạy thử nghiệm trên cả hai XvncXvfb, nhưng không có kết quả.

On Xvnc, các cuộc thử nghiệm thất bại với

Prism ES2 Error - nInitialize: glXChooseFBConfig failed 

trong khi trên Xvfb, họ cho tôi

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

Một blog post đề nghị để cài đặt gtk-engines-pixbuf để giảm bớt vấn đề thứ hai, nhưng điều này chỉ thay đổi số hiển thị trong thông báo lỗi.

Bây giờ, tôi triệu tập các kiến ​​thức JavaFX của StackOverflow và yêu cầu

  • Bạn có biết làm thế nào để giải quyết lỗi trên?
  • Bạn đã chạy thành công thử nghiệm JavaFX 2 hoặc tương tác Robot trên máy chủ CI (không đầu)?
  • Bạn đã định cấu hình hệ thống đó để hệ thống hoạt động như thế nào?
+1

Tôi đoán rằng hỗ trợ kiểm tra máy chủ CI (không đầu) của JavaFX không khả dụng cho đến khi JavaFX 8 (dựa trên [this] (http://javafx-jira.kenai.com/browse/RT-20494) [ jiras] (http://javafx-jira.kenai.com/browse/RT-20510)). Có thể Sergey từ nhóm QA JavaFX có thể biết nhiều hơn, thỉnh thoảng anh ta xem lại trang Q/A này. – jewelsea

+0

Trừ khi Sergey hiển thị với một số câu trả lời hoàn toàn khác, tôi sẵn sàng chấp nhận điều này như là sự thật, nếu bạn gửi nó như là một câu trả lời. –

+0

OK, làm cho nó một câu trả lời. – jewelsea

Trả lời

6

Hỗ trợ (không đầu) CI máy chủ thử nghiệm của JavaFX là không có sẵn cho đến khi JavaFX 8.

trả lời dựa trên thông tin trong các JavaFX vấn đề theo dõi hồ sơ:

  • JDK-8088651 "Headless Glass nhu cầu toolkit được kết nối với các bài kiểm tra đơn vị lượng tử và lăng kính "
  • JDK-8091286" Lượng tử cần kiểm tra không đầu và đầu ").

Cập nhật ngày 08 Tháng 1 2015

Các JavaFX vấn đề liên quan theo dõi hồ sơ không được thực hiện cho Java 8 và đã được bố trí để Java 9.

Java 8 mã nguồn hiện nay bao gồm một rendering tối thiểu công cụ có tên Monocle cung cấp hiển thị Headless (và hiển thị cho các nền tảng đích khác) cho các thành phần JavaFX. Tôi chưa bao giờ sử dụng Monocle và không thể cung cấp hướng dẫn chi tiết về cách sử dụng nó để hiển thị không đầu. Tôi tin rằng để sử dụng Monocle, bạn hiện cần thực hiện một bản dựng JavaFX tùy chỉnh từ nguồn (như tôi nghĩ Monocle thường chỉ được vận chuyển trong các phiên bản JavaFX nhúng, không phải là phiên bản JavaFX tiêu chuẩn đi kèm với môi trường chạy Java và môi trường JDK của máy tính để bàn) .

Thông tin về Monocle có sẵn trên JavaFX wiki.

Mặc dù, hiển thị không đầu được cung cấp bởi Monocle, tôi không nghĩ rằng việc sử dụng Monocle để thực hiện hiển thị không đầu được hỗ trợ chính thức bởi Oracle (mặc dù tôi không nghĩ rằng JavaFX không đầu bất kỳ hình thức nào được hỗ trợ chính thức, vì vậy tôi đoán nếu Monocle hoạt động tốt cho bạn, bằng mọi cách sử dụng nó).

Hiển thị không đầu trong Monocle là triển khai kết xuất phần mềm để việc thực thi một số phần tử đồ họa có thể chậm hơn hoạt động tăng tốc phần cứng tiêu chuẩn của JavaFX trong môi trường máy tính để bàn.

Có thể có các phương pháp khác cho phép JavaFX chạy trong môi trường không có đầu mà tôi không biết.

Nếu nghi ngờ, hãy yêu cầu nhà phát triển JavaFX trên openjfx-dev mailing list.

Nếu bạn đang chạy dưới Linux, sử dụng Xvfb như được đề xuất bởi câu trả lời của Jan Zarnikov có lẽ là một giải pháp tốt và có khả năng thích hợp hơn khi sử dụng Monocle.

+0

Câu trả lời này có thể được cập nhật ngay bây giờ khi có sẵn JavaFX 8 không? –

+0

Câu trả lời được cập nhật để cung cấp thông tin hiện tại như tôi biết. – jewelsea

+0

[Câu trả lời này] (http://stackoverflow.com/a/29919290/1212960) cho thấy Monocle có sẵn dưới dạng phụ thuộc bổ sung. –

12

Tôi đã gặp sự cố tương tự - đang chạy thử nghiệm JUnit trong môi trường không có đầu với Maven.

Chúng tôi không sử dụng JemmyFX. Chúng tôi chỉ có các bài kiểm tra rất đơn giản mà sử dụng một Rule JUnit tương tự như thế này: https://gist.github.com/andytill/3835914 (điều này là cần thiết cho mã có sử dụng Platform.runLater (...))

Phiên bản hiện tại của JavaFX (cung cấp với JDK 1.7. 0-21) dường như được làm việc trong Xvfb trên Ubuntu 12.04 mà không có một Xserver chạy:

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

Cảm ơn, nó hoạt động. – gontard