2009-10-16 10 views
13

Tôi đang tìm đến đơn vị kiểm tra một số mã SWT và Swing cho một dự án tôi đang làm việc và các bài kiểm tra chạy tốt miễn là tôi đang chạy chúng từ nhật thực.Cách dễ nhất để kiểm tra đơn vị SWT và ứng dụng Swing trong môi trường không đầu?

Ngay sau khi tôi chạy chúng trong môi trường hudson của tôi nó không thành công vì hudson chạy thử nghiệm ở chế độ không đầu.

Cách tốt nhất để làm điều này là gì? Chỉ các giải pháp nguồn mở (vì dự án là mã nguồn mở).

Trả lời

24

Bạn có thể chạy Xvfb (X bộ đệm khung ảo X, máy chủ X11 thực hiện tất cả các hoạt động đồ họa trong bộ nhớ) và hoạt động tốt.

Nhưng có một giải pháp khác với plugin của Hudson dành cho Xvnc. Đơn giản chỉ cần cài đặt plugin và đánh dấu vào hộp kiểm trong màn hình cấu hình công việc:

alt text http://www.justinedelson.com/blog/wp-content/uploads/xvnc_box.jpg

Hudson sau đó sẽ tự động khởi động một phiên Xvnc và thiết lập các biến môi trường DISPLAY với giá trị thích hợp và sau đó đóng cửa phiên giao dịch khi xây dựng hoàn tất. Một lợi thế này có trên phương pháp Xvfb là nếu bạn có nhiều dự án Swing/SWT xây dựng đồng thời, mỗi bản dựng có phiên X riêng của nó. Điều này có thể không phải là một vấn đề ở tất cả, nhưng nó có vẻ như một ý tưởng tốt.

Trước khi sử dụng plugin này, bạn rõ ràng phải cài đặt Xvnc. Điều ít rõ ràng hơn (mặc dù hợp lý) là bạn cũng phải đặt mật khẩu. Bạn thực hiện việc này bằng cách chạy:

$ vncpassword 

Điều này phải được thực hiện giống như người dùng Hudson chạy dưới dạng.

+2

Nếu công trình này, đây là lừa neatest tôi đã thấy trong nhiều năm! –

+0

+1 Làm việc cho tôi :-) –

0

Tôi không biết về SWT, nhưng với Swing bạn không thể. Bất kỳ instantiation của một cửa sổ (JFrame, JDialog, vv) ngay cả khi nó không bao giờ được thiết lập để nhìn thấy sẽ thổi lên trong chế độ không đầu (trên JDK 5). Những gì chúng tôi đã làm không được chạy trong chế độ không đầu và cài đặt Xvfb để cung cấp cửa sổ mà không thực sự có hệ thống cửa sổ thực được cài đặt.

2

Sử dụng Swing Tôi có xu hướng sắp xếp mọi thứ để cây thành phần có thể được tạo mà không cần Cửa sổ ở trên cùng. Việc này cho phép bạn chỉ cần tạo một JPanel trong một bài kiểm tra đơn vị và sử dụng nó làm thành phần cấp cao nhất của bạn. Có một số điều bạn không thể kiểm tra, chẳng hạn như tập trung và bất kỳ logic nào liên quan đến việc tạo Khung cho hoạt động bình thường, nhưng đại đa số có thể được kiểm tra.

Bạn có thể muốn nhìn vào thư viện FEST để làm cho cuộc sống dễ dàng hơn cho dù bạn đi không đầu hay không, có vẻ rất tốt: http://fest.easytesting.org/swing/wiki/pmwiki.php