Środowisko TPTP zawiera pewną liczbę usług automatycznych, które można wywoływać spoza kontekstu środowiska roboczego Eclipse. Usługi te obejmują wykonywanie testu, odpytywanie o wyniku testu i publikowanie wyniku testu.
W tym temacie pomocy jest wyjaśnione, jak wykonywać następujące czynności, korzystając z usług automatycznych środowiska TPTP:
Do programowego uruchamiania, wykonywania i generowania wyników testów służy usługa wykonywania testu. Usługa wykonywania testu zawiera funkcje kontrolowania wykonywania testów i zastępuje dotychczas stosowane autonomiczne metody kontrolowania testów. Przy użyciu usługi wykonywania testu można uruchamiać testy ze skryptów ant, skryptów powłoki i dowolnych programów, korzystając z nienadzorowanego środowiska Eclipse. Równocześnie może być wykonywanych wiele testów, pod warunkiem, że w danym komputerze jest wystarczająco dużo pamięci (każde wykonanie usługi wymaga obecnie osobnej instancji hosta Eclipse). Nawet jeśli testy są wykonywane na zdalnych komputerach przy użyciu wdrożenia i funkcji zdalnego wykonywania testu TPTP, instancje hosta Eclipse są uruchomione na komputerze odbiorcy usługi.
Obsługiwane właściwości usługi wykonywania testu są opisane w informacjach pokrewnych - te same właściwości obowiązują dla wszystkich adapterów automatyzacji klienta. W przypadku skryptów ant dostępny jest prosty zestaw czynności ant do ustawiania właściwości usługi i wykonywania testu. W przypadku skryptów powłoki właściwości są określane za pomocą oczekiwanej składni wiersza komend (nazwy właściwości są poprzedzone łącznikiem, a po nich następuje spacja i wartość wskazująca instancję). W przypadku programów Java do ustawiania i wskazywania właściwości oraz kontrolowania wykonywania usługi służą pliki JAR klienta automatyzacji. Niektóre adaptery klientów mogą oferować dodatkowe opcje wymagane przez środowisko danego klienta (lub jako funkcje dodatkowe tego adaptera).
Komponenty usług automatycznych TPTP znajdują się w pakiecie z wtyczką org.eclipse.hyades.execution i są reprezentowane przez trzy pliki JAR, kilka wpisów XML w pliku plugin.xml oraz wpisy w pliku MANIFEST.MF.
tptp-automation-client.jar
(ten plik JAR, czyli prosty kawałek kodu niezbędny do ustanowienia strony klienckiej magistrali usługi, uruchomienia środowiska Eclipse, jeśli jest to wymagane, oraz nienadzorowanego wykonywania usług, jest wykorzystywany podczas uruchamiania testów z wiersza polecenia i skryptów powłoki, jak również z dowolnego kodu Java).
tptp-automation-server.jar
(przez ten serwer automatyzacji TPTP, który jest ładowany na żądanie wtedy, gdy usługi są odpytywane i wykonywane przy użyciu struktury, implementowany jest podstawowy punkt rozszerzenia aplikacji środowiska Eclipse wykorzystywany jako broker i wskaźnik usługi)
ant-tptp.jar
(jest to plik JAR o tej samej treści co plik tptp-automation-client.jar, ale pod inną nazwą, aby zachować zgodność z innymi bibliotekami czynności ant)
Jeśli testy mają być wykonywany poza uruchomioną instancją środowiska Eclipse, upewnij się, czy narzędzie ant jest prawidłowo zainstalowane (dokumentacja narzędzia ant zawiera odpowiednie informacje dotyczące prawidłowej jego konfiguracji). Oprócz standardowej instalacji narzędzia ant skopiuj również plik ant-tptp.jar do katalogu ant lib wraz z innymi czynnościami. Jeśli test jest wykonywany wewnątrz środowiska Eclipse, narzędzie ant jest już zainstalowane, ale należy pamiętać o dodaniu pliku ant-tptp.jar na karcie czynności dodatkowych konfiguracji startowej ant lub w sekcji Wpisy globalne na stronie preferencji Ścieżka klasy Ant. Przedstawiony poniżej przykładowy strkupt ant o nazwie "test.xml" wykonuje test o nazwie testA w folderze testów jednostkowych projektu testów. Projekt testu znajduje się w określonym obszarze roboczym d:\development\workspace, a instancja hosta środowiska Eclipse jest określona jako d:\development\eclipse. Inne prawidłowe kombinacje właściwości można znaleźć na referencyjnej liście obsługiwanych właściwości.
Chociaż w poniższym przykładzie jest wykorzystywane zadanie testu TPTP, to jest możliwe wykonanie testu również przy użyciu zadania automatyzacji TPTP. Zadanie automatyzacji ma, w odróżnieniu od zadania testu TPTP, charakter bardziej ogólny i jest zadaniem ant służącym do wykonywania dowolnych zautomatyzowanych usług TPTP. Zadanie testu jest zadaniem bezpiecznym (type-safe) utworzonym specjalnie na potrzeby uruchamiania usługi wykonywania testu. Więcej przykładowych skryptów ant zawiera pakiet org.eclipse.hyades.automation.test folderu źródłowego src-automation-client wtyczki org.eclipse.hyades.execution.
<project name="Skrypt testu zadań ant TPTP" default="test" xmlns:tptp="antlib:org.eclipse.hyades.automation.client.adapters.ant"> <property name="eclipse.home" value="D:\development\eclipse"/> <description> Ten skrypt ant służy do testowania adapterów klienta zadania ant automatyzacji TPTP, a także może być wykorzystywany do testowania wewnętrznego wykonywania automatyzowanych usług TPTP za pośrednictwem serwera automatyzacji TPTP </description> <!-- Wykonaj pakiety testów TPTP --> <target name="test" description="Wykonuje pakiety testów TPTP, korzystając z domyślnych zadań ant TPTP"> <!-- Wykonaj pakiet testów TPTP, korzystając z zadania testu i udostępniając obszar roboczy --> <tptp:test workspace="D:\development\workspace" project="tests" suite="unit-tests/testA.testsuite" synchronicity="synchronous"/> </target> </project>
Uruchamianie usług automatycznych środowiska TPTP wymaga prawidłowo skonfigurowanego narzędzia Ant
(informacje na temat wykonywania testów ze skryptów Ant zawiera powyższa sekcja). Na tym przykładzie jest pokazane, jak wykonać wiele testów, korzystając z zadania tptp:execution, i jak odpytywać o wyniki tych wykonanych testów, korzystając z zadania tptp:interrogation.
Oba te zadania Ant obsługują wiele elementówfilesets
i
filelists
narzędzia Ant, co pozwala na korzystanie z symboli zastępczych lub bezpośrednie określanie wielu plików jako danych wejściowych zadań.
W tym przykładzie wykonamy wszystkie pakiety testów w projekcie TPTPJUnitTests, a zestaw wynikowych plików wykonalnych zostanie nam zwrócony jako element filelist
w podanej przez nas zmiennej narzędzia Ant (w tym przypadku "tptp.test.results".) Następnie przekażemy element
filelist
jako dane wejściowe do usługi tptp:interrogation, która odpyta każdy z tych plików wykonywalnych, aby określić ogólny wynik i przypisze go do podanej przez nas zmiennej narzędzia Ant (w tym przypadku "tptp.test.verdict".)
<project name="Kurs Usługi automatyczne środowiska TPTP"
default="main" xmlns:tptp="antlib:org.eclipse.hyades.automation.client.adapters.ant"> <!-- Definiowanie wspólnych właściwości dla wszystkich usług automatycznych --> <property name="tptp.test.workspace" value="C:\eclipsecon\eclipse\workspace"/> <property name="tptp.test.project" value="TPTPJUnitTests" /> <property name="tptp.test.connection" value="tptp:rac://localhost:10002/default"/> <property name="tptp.automation.eclipse" value="C:\eclipseconwb_birt\eclipse" />
<!-- Definiowanie właściwości lokalnych na poziomie skryptu, które zależą od instalacji --> <property name="project.dir" value="${tptp.test.workspace}\${tptp.test.project}"/>
<target name="main" depends="test-execution, test-results-interrogation"/>
<!-- Wykonanie pakietów testów, korzystając z domyślnej nazwy wyników --> <target name="test-execution"> <echo message="Wykonywanie pakietu testów..." /> <tptp:execution resultsrefid="tptp.test.results"> <fileset dir="${project.dir}"> <include name="**/*.testsuite"/> </fileset> </tptp:execution> </target>
<!-- Odpytywanie o wyniki pakietu testów, aby określić wynik ogólny --> <target name="test-results-interrogation"> <echo message="Interrogating test suite results..." /> <condition property="tptp.test.success"> <tptp:interrogation verdictproperty="tptp.test.verdict"> <filelist refid="tptp.test.results"/> </tptp:interrogation> </condition> <echo message="Ogólny wynik testów: '${tptp.test.verdict}'" /> </target>
</project>
Uruchamianie usług automatycznych środowiska TPTP wymaga prawidłowo skonfigurowanego narzędzia Ant
(informacje na temat wykonywania testów ze skryptów Ant zawiera powyższa sekcja). Na tym przykładzie jest pokazane, jak wykonać wiele testów, korzystając z zadania tptp:execution, i jak na podstawie tych wykonanych testów wygenerować raporty oparte na środowisku BIRT, korzystając z zadania tptp:publication.
Zadanie publikacji obsługuje wiele elementówfilesets
i
filelists
narzędzia Ant, co pozwala na korzystanie z symboli zastępczych lub bezpośrednie określanie wielu plików jako danych wejściowych.
W tym przykładzie wykonamy wszystkie pakiety testów w projekcie TPTPJUnitTests, a zestaw wynikowych plików wykonalnych zostanie nam zwrócony jako element filelist
w podanej przez nas zmiennej narzędzia Ant (w tym przypadku "tptp.test.results".) Następnie przekażemy ten element filelist
jako dane wejściowe usługi tptp:publication, która wygeneruje raport z wykonania środowiska TPTP, korzystając z domyślnego szablonu raportu (TestExecution.rptdesign, który znajduje się we wtyczceorg.eclipse.tptp.test.report.birt), i umieści go w podanym położeniu (w tym przypadku c:\temp\report.html.)
<project name="Kurs Usługi automatyczne środowiska TPTP"
default="main" xmlns:tptp="antlib:org.eclipse.hyades.automation.client.adapters.ant"> <!-- Definiowanie wspólnych właściwości dla wszystkich usług automatycznych --> <property name="tptp.test.workspace" value="C:\eclipsecon\eclipse\workspace"/> <property name="tptp.test.project" value="TPTPJUnitTests" /> <property name="tptp.test.connection" value="tptp:rac://localhost:10002/default"/> <property name="tptp.automation.eclipse" value="C:\eclipseconwb_birt\eclipse" />
<!-- Definiowanie właściwości lokalnych na poziomie skryptu, które zależą od instalacji --> <property name="project.dir" value="${tptp.test.workspace}\${tptp.test.project}"/> <property name="report.publication.location" location="c:/temp" />
<target name="main" depends="test-execution, test-results-publication"/>
<!-- Wykonanie pakietów testów, korzystając z domyślnej nazwy wyników --> <target name="test-execution"> <echo message="Wykonywanie pakietu testów..." /> <tptp:execution resultsrefid="tptp.test.results"> <fileset dir="${project.dir}"> <include name="**/*.testsuite"/> </fileset> </tptp:execution> </target>
<!-- Publikowanie raportu wyników pakietu testów -->
<target name="test-results-publication"> <echo message="Publikowanie raportu wyników pakietu testów..." /> <tptp:publication report="${report.publication.location}/report.html"> <filelist refid="tptp.test.results"/> </tptp:publication> </target>
</project>
Zachowanie zadania tptp:publication można dostosować, określając inny szablon raportów środowiska BIRT, np. szablon TabularReport.rptdesign, który znajduje się w katalogu szablonów wtyczki org.eclipse.tptp.test.report.birt. Zachowanie można również dostosować, korzystając z usługi publikacji publish-testsuites i stosując pakiety testów, a nie pliki wyników wykonania testów jako dane wejściowe usługi publikacji. Jeśli użyjesz usługi publikacji publish-testsuites i przekażesz pliki pakietu testów jako dane wejściowe usługi publikacji, musisz również określić datę początkową i końcową w oknie raportu (aby w obszarze roboczym zostały znalezione wszystkie wyniki wykonania z tego okresu). Na poniższym przykładzie jest pokazane, jak wykonać raport ze wszystkich pakietów testów w projekcie Test1, wybierając wszystkie wyniki wykonania z ostatnich 60 dni i generując raport za pomocą szablonu raportu w tabeli.
<project name="Kurs Usługi automatyczne środowiska TPTP"
default="main" xmlns:tptp="antlib:org.eclipse.hyades.automation.client.adapters.ant"> <!-- Definiowanie wspólnych właściwości dla wszystkich usług automatycznych --> <property name="tptp.test.workspace" value="C:\eclipsecon\eclipse\workspace"/> <property name="tptp.test.project" value="TPTPJUnitTests" /> <property name="tptp.test.connection" value="tptp:rac://localhost:10002/default"/> <property name="tptp.automation.eclipse" value="C:\eclipseconwb_birt\eclipse" />
<!-- Definiowanie właściwości lokalnych na poziomie skryptu, które zależą od instalacji --> <property name="project.dir" value="${tptp.test.workspace}\${tptp.test.project}"/> <property name="report.publication.location" location="c:/temp" /> <property name="tptp.publication.service" value="org.eclipse.tptp.test.report.birt.publish-testsuites"/>
<!-- Wykonanie raportu --> <target name="main" depends="test-results-publication"/>
<target name="set-date-range"> <!-- Użyj standardowych mechanizmów środowiska tstamp, aby określić żądany zakres dat --> <!-- W tym przykładzie został użyty zakres od dnia bieżącego do 60 dni wstecz --> <tstamp> <format property="startDateTime" pattern="MM/dd/yyyy hh:mm aa" offset="-60" unit="day"/> </tstamp> <tstamp> <format property="endDateTime" pattern="MM/dd/yyyy hh:mm aa"/> </tstamp> </target>
<!-- Publikowanie raportu wyników pakietu testów --> <target name="test-results-publication" depends="set-date-range"> <echo message="Publikowanie raportu wyników pakietu testów..." /> <tptp:publication report="${report.dir}/report.html" reportTemplateLocation="C:\TPTP_TestPass\ReportBuild\eclipse\plugins\org.eclipse.tptp.test.report.birt_4.2.0.v200605180959\templates\TabularReport.rptdesign" startDateTime="${startDateTime}" endDateTime="${endDateTime}" > <fileset dir="${project.dir}"> <include name="**/*.testsuite" /> </fileset> </tptp:publication> </target>
</project>
Testy mogą być wykonywane bezpośrednio z wiersza komend i skryptów powłoki w ten sposób, że właściwości testu przybierają postać argumentów wiersza komend. W adapterach klientów automatyzacji TPTP znajdują się pliki .bat i .cmd przeznaczone do używania w systemie Windows oraz plik .sh przeznaczony do używania w systemie operacyjnym Linux. Istnieje możliwość określenia długich zestawów argumentów i/lub często powtarzających się argumentów w pliku konfiguracyjnym, aby uruchomienie usługi wykonywania testu z wiersza komend wymagało jak najmniej wpisywania. Adapter klienta automatyzacji powłoki zawiera manifest w postaci pliku tekstowego (dla skryptu lub pliku wsadowego) oraz uzupełniającego komponentu Java - jeden i drugi manifest jest potrzebny do wykonywania testów z wiersza komend. Chociaż wszystkie adaptery klienta automatyzacji platformy TPTP można znaleźć w pliku tptp-automation-client.jar, to część kodu adaptera jest powtórzona również w pliku ant-tptp.jar w postaci pliku JAR narzędzia ant (służy to do zachowania zgodności nazewnictwa pliku JAR zadania z innymi dostępnymi zadaniami ant).
Właściwości usługi wykonywania zadania są ustawiane przez poprzedzenie nazw właściwości łącznikiem. Należy również pamiętać o określeniu katalogu głównego środowiska Eclipse.
Testy można uruchamiać z dowolnej aplikacji Java. Adapter Java jest właściwie wykorzystywany także przez inne adaptery automatyzacji klienta, w tym adaptery powłoki i ant, do włączenia się do magistrali usługi. Jedyną czynnością wymaganą do wykonywania testów z jakiegokolwiek kodu Java jest upewnienie się, czy zawiera on właściwe odwołanie do pliku tptp-automation-client.jar (w środowisku Eclipse przekłada się to na posiadanie biblioteki w ścieżce budowania projektu Java). Oczywiście obowiązują również wszystkie inne typowe wymagania TPTP, jak np. to, że musi być uruchomiony komponent Agent Controller.
Adapter klienta automatyzacji Java zawiera bardzo prosty interfejs API do wykonywania testów ze wszystkimi definiowalnymi właściwościami, które są zawarte w standardowym obiekcie właściwości Java. W poniższym przykładzie wykonywany jest ten sam test, który został przedstawiony w poprzednim przykładowym skrypcie ant. Należy zauważyć, że identyfikator usługi przekazywany do metody wykonania jest identyfikatorem usługi wykonywania testu TPTP (ta usługa obsługuje wszystkie podstawowe typy testów TPTP) - można również wykonywać inne usługi zautomatyzowane, jeśli są one dostępne, ale zmieniając identyfikator i właściwości skonfigurowane w poniższym kodzie.
// Utwórz adapter Java powiązany z określonym katalogiem głównym środowiska Eclipse AutomationClientAdapter automation = new AutomationClientAdapter ("d:\\development\\eclipse"); // Create and configure a properties object Properties properties = new Properties(); properties.setProperty("workspace", "D:\\development\\workspace"); properties.setProperty("project", "tests"); properties.setProperty("suite", "unit-tests/testA.testsuite"); // Wykonaj usługę o poniższej nazwie ze skonfigurowanymi właściwościami automation.execute("org.eclipse.hyades.test.tools.core.execute", properties);
Pojęcia pokrewne
Przegląd zautomatyzowanej struktury usług
Czynności pokrewne
Uruchamianie testów ze skryptów i aplikacji
Informacje pokrewne
Obsługiwane właściwości usługi wykonywania testu
(C) Copyright IBM Corporation 2005,2006. Wszelkie prawa zastrzeżone.