Opracowuję funkcję Eclipse zawierającą kilka wtyczek Eclipse, wykorzystujących usługi deklaracji Equinox (DS) do łączenia wtyczek w czasie wykonywania. Chciałbym dodać testy integracyjne, aby zweryfikować konfigurację równonocy.Najlepsze praktyki dotyczące testowania integracji funkcji Eclipse
W szczególności chcę, aby sprawdzić,
- elementy usługowe spajają jak oczekiwano
- wiązki są aktywowane
-
wtyczek wymiany informacji zgodnie z oczekiwaniami(patrz Edycja 2)
Co więcej, chcę, aby ta integracja przetestowała część mojego uciążliwy proces integracji za pomocą bezgłowego budowania Eclipse PDE (jak opisano here i here).
Moje pytanie brzmi:: można polecić żadnych ram, narzędzi i praktyk, które ułatwią tego typu testów integracyjnych w ramach ograniczeń, jakie zidentyfikowane?
Znalazłem dwa przewody do tej pory:
- Spring Dynamic Modules zawiera ramy testowania integracji OSGi. Jednak nie udało mi się uzyskać prostego testu Spring DM, który działałby w środowisku Eclipse. Narzeka, że "platforma już działa".
- Pax Exam (poprzednio Pax Drone) to kolejne narzędzie do testowania integracji OSGi.
Edit: Aby wyjaśnić, każdy plugin posiada komponent usługi OSGi skonfigurowany z pliku xml definicji składnika. Błąd w jednym z tych plików konfiguracyjnych nie przerwie żadnych zależności wtyczek i może łatwo zostać niezauważony do czasu wykonania. Testy integracyjne są niezbędne do wykrycia takiego niepowodzenia.
Edycja 2: Do tej pory wszystko, co widziałem zdaje się potwierdzać tezę URI (patrz poniżej), które funkcje multi-plugin Eclipse nie są testowane integracja na poziomie cecha/produktów. Jestem gotów przejść bez kompleksowych testów integracyjnych, jeśli mogę przynajmniej automatycznie sprawdzić, czy komponenty usług poprawnie się łączą.
Moje podejście (jeszcze nie działa):
In a JUnit test do
For each bundle/plugin of interest
Get the osgi Bundle object with org.eclipse.core.runtime.Platform.getBundle()
Verify that the Bundle is active with Bundle.getState()
Verify that the Bundle is using the expected services with Bundle.getServicesInUse()
Verify that the Bundle has registered the expected services with Bundle.getRegisteredServices()
Biegnę mój kod z Eclipse Plug-in Test konfiguracji startu, uruchomienie mój produkt Eclipse jako "program do uruchomienia". Po uruchomieniu testów mogę sprawdzić, czy pakiety są aktywne, ale komponenty usługi nie są aktywowane, a metody getServicesInUse i getRegisteredServices zwracają wartość null. Załadowałem klasę z każdego pakietu na wypadek, gdyby był problem z leniwą aktywacją, ale to nie pomogło. Sprawdziłem również, że wszystkie komponenty usługi są "natychmiastowymi" komponentami, więc powinny zostać aktywowane, gdy tylko ich pakiety zostaną aktywowane. Dlaczego Equinox DS nie robi magii?
@Yossi Dahan: Po tym pytaniu znalazłeś sposób na wdrożenie tych "testów integracyjnych" w OSGi/Equinox? W tej chwili stoimy przed tym samym pytaniem – maasg