2009-10-16 11 views
13

Szukam jednostki testowania kodu SWT i Swing dla projektu, nad którym pracuję, a testy sprawdzają się tak długo, jak długo uruchamiam je od zaćmienia.Najłatwiejszy sposób testowania urządzeń SWT i Swing w bezgłowym środowisku?

Jak tylko uruchomię je w moim środowisku hudson, to się nie uda, ponieważ Hudson uruchamia testy w trybie bezgłowym.

Jaki jest najlepszy sposób na zrobienie tego? Zalecane są tylko rozwiązania open source (ponieważ projekt jest open source).

Odpowiedz

24

Można uruchomić Xvfb (X wirtualny framebuffer, serwer X11, który wykonuje wszystkie operacje graficzne w pamięci) i działa dobrze.

Ale jest inne rozwiązanie z wtyczką Hudsona dla Xvnc. Wystarczy zainstalować wtyczkę i zaznacz pole wyboru w oknie konfiguracji pracy:

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

Hudson będzie następnie automatycznie uruchomić sesję Xvnc i ustawić zmienną środowiskową DISPLAY do odpowiedniej wartości, a następnie zamknąć sesję, na kompilacja jest zakończona. Jedną z zalet tej metody Xvfb jest to, że jeśli masz wiele projektów Swing/SWT budujących jednocześnie, każda kompilacja ma własną sesję X. To może nie być problem, ale wydaje się to dobrym pomysłem.

Przed użyciem tej wtyczki, oczywiście musisz mieć zainstalowany Xvnc. Mniej oczywiste (choć sensowne) jest to, że musisz także ustawić hasło. Robisz to, uruchamiając:

$ vncpassword 

To musi być wykonane jako ten sam użytkownik, który uruchamia się jako Hudson.

+2

Jeśli to działa, to jest neatest sztuczka I widziałem od lat! –

+0

+1 Działa dla mnie :-) –

0

Nie wiem o SWT, ale z Swingiem nie możesz. Każda instancja okna (JFrame, JDialog itp.), Nawet jeśli nie jest nigdy widoczna, zostanie wysadzona w tryb bezgłowy (w JDK 5). To, co zrobiliśmy, nie było uruchomione w trybie bezgłosu i zainstalowaliśmy Xvfb, aby zapewnić okienkowanie bez faktycznego zainstalowania prawdziwego systemu okienkowego.

2

Używanie Swing Zazwyczaj organizuję rzeczy, aby drzewo komponentów mogło być tworzone bez okna u góry. Dzięki temu możesz po prostu utworzyć JPanel w teście jednostki i użyć go jako komponentu najwyższego poziomu. Są pewne rzeczy, których nie możesz przetestować, takie jak skupienie i każda logika związana z tworzeniem ramki do normalnej pracy, ale zdecydowana większość może być przetestowana.

Można zajrzeć do biblioteki FEST, aby ułatwić życie, czy iść bez głowy, czy nie, to wygląda bardzo dobrze: http://fest.easytesting.org/swing/wiki/pmwiki.php

Powiązane problemy