Cele:
Utworzyć pulę danych i uzyskać do niej dostęp z przykładowej aplikacji testu, korzystając z platformy narzędzi testowych i sprawdzających wydajność (Test and Performance Tools Platform - TPTP) środowiska Eclipse.
Wymagany czas
1 godzina
Przed rozpoczęciem tego kursu wykonaj następujące czynności:
-
Zainstaluj platformę narzędzi testowych i sprawdzających poprawność (Test and Performance Tools Platform - TPTP) środowiska Eclipse.
- Naucz się podstaw testowania JUnit. Więcej informacji na temat testowania JUnit można znaleźć w serwisie www.junit.org.
- Skonfiguruj i uruchom komponent Agent Controller, który będzie odpowiadał wersji platformy TPTP. Więcej informacji zawiera strona
Getting started with the Agent Controller.
Opis
W trakcie tego kursu utworzysz i przetestujesz aplikację o nazwie MyShoppingCart. Korzystając z platformy TPTP środowiska Eclipse zaprojektujesz testy JUnit i utworzysz pulę danych, z której będą pobierane dane do środowiska testowego.
W tym kursie jest pokazane, jak wykonać następujące procedury:
- Tworzenie przykładowej aplikacji użytkownika
- Konfigurowanie pakietu testów TPTP
- Tworzenie puli danych i inicjowanie danych testowych
- Modyfikowanie przypadków testowych, aby odwoływały się do puli danych
W tej procedurze zaprojektujesz klasę MyShoppingCart. W następnych procedurach zaprojektujesz odpowiednie środowisko testowe, korzystając z platformy TPTP środowiska Eclipse.
- Utwórz nowy projekt Java środowiska Eclipse.
- Z menu Plik wybierz opcje Plik > Nowy > Projekt.... Zostanie wyświetlone okno dialogowe Nowy projekt.
- Z listy kreatorów wybierz opcję Projekt Java i kliknij przycisk Dalej. Zostanie wyświetlona strona Tworzenie projektu Java.
- Wpisz datapoolExample jako nazwę projektu i kliknij przycisk Zakończ. Projekt datapoolExample zostanie wyświetlony w widoku Nawigator.
- Utwórz klasę MyShoppingCart.
- W widoku Nawigator kliknij prawym przyciskiem myszy projekt datapoolExample i wybierz opcję Nowy > Klasa. Zostanie wyświetlone okno dialogowe Nowa klasa Java.
- Wpisz MyShoppingCart w polu Nazwa.
- Wyczyść opcję tworzenia metody main public static void
main(String[] args).
- Kliknij przycisk Zakończ. Plik MyShoppingCart.java zostanie wyświetlony w edytorze Java.
- Wpisz następujący kod źródłowy klasy MyShoppingCart:
import java.util.*;
public class MyShoppingCart {
public Hashtable myFlowers;
public MyShoppingCart() {
myFlowers = new Hashtable();
myFlowers.put("Orchidea", new Double(5.99));
myFlowers.put("Tulipan", new Double(1.99));
myFlowers.put("Biała gwiazda betlejemska", new Double(6.99));
myFlowers.put("Biała róża", new Double(9.99));
myFlowers.put("Geranium", new Double(4.99));
}
public double itemCost(String itemName, int itemQuantity)
{
Double price = (Double)myFlowers.get(itemName);
if (price != null) {
return price.doubleValue()*itemQuantity;
}
return -1;
}
}
- Zapisz plik MyShoppingCart.java. Z menu Plik wybierz opcje Plik > Zapisz.
W tej procedurze zaprojektujesz pakiet testów dla klasy MyShoppingCart. Korzystając z platformy TPTP środowiska Eclipse zaprojektujesz test dla metody itemCost.
- Otwórz perspektywę testu.
- Z menu plik wybierz Okna > Otwórz perspektywę > Inne.
- Wybierz opcję Test i kliknij przycisk OK. Zostanie wyświetlony Nawigator testów.
- Utwórz nowy test JUnit TPTP.
- W Nawigatorze testów kliknij prawym przyciskiem myszy projekt datapoolExample i wybierz opcje Nowy > Element testowy...
- W oknie dialogowym Element testowy wybierz opcję Test JUnit TPTP i kliknij przycisk Dalej. Zostanie wyświetlone okno dialogowe Nowy przypadek testowy z pytaniem, czy chcesz dodać biblioteki JUnit. Kliknij przycisk Tak, aby dodać biblioteki JUnit.
- Na stronie Nowy kod źródłowy testu JUnit wpisz shoppingCartTest_src w polu Nazwa. W sekcji Wybierz sposób edycji zachowania testu wybierz opcję edytowania W edytorze testów (domyślną).
- Kliknij przycisk Zakończ. Zostanie wyświetlony edytor testów JUnit TPTP, w którym będzie widoczny pakiet testów shoppingCartTest_src. Na karcie Przegląd znajduje się opis testu, informacje o źródle i lista metod testowych. Aktualnie nie są zdefiniowane żadne metody testowe. Na potrzeby tego kursu w edytorze testów JUnit TPTP są generowane szkielety metod, więc opcja Implementuj zachowanie testu jako kod w sekcji Informacje o źródle powinna być wyłączona. Więcej informacji można znaleźć w sekcji Edytor pakietów testów JUnit
- Dodaj metody testItemCost i testShoppingCartConstructor.
- Na karcie Metody testowe kliknij przycisk Dodaj. Zostanie wyświetlona nazwa domyślna dla tego testu.
- Dodaj metodę testItemCost. W polu Nazwa wpisz testItemCost jako nazwę nowego testu. W polu Opis wpisz Test dla metody MyShoppingCart.itemCost(String, int).
- Dodaj metodę testShoppingCartConstructor. Na karcie Metody testowe kliknij przycisk Dodaj. W polu Nazwa wpisz testShoppingCartConstructor jako nazwę nowego testu. W polu Opis wpisz Test dla konstruktora klasy MyShoppingCart.
- Skonfiguruj zachowanie wykonywania testu.
- Dodaj pętlę wykonywania testu. Na karcie Zachowanie kliknij opcje Dodaj..
> Pętla. W polu Nazwa wpisz Loop_MyShoppingCart. W polu Liczba iteracji wpisz 1 (wartość domyślna).
- Dodaj wywołanie testu testShoppingCartConstructor. Zaznacz pętlę Loop_MyShoppingCart i kliknij opcje Dodaj... > wywołanie. Zostanie wyświetlone okno dialogowe Wywołanie testu. Zaznacz test testShoppingCartConstructor i kliknij przycisk OK.
- Dodaj wywołanie testu testItemCost. Zaznacz pętlę Loop_MyShoppingCart i kliknij opcje Dodaj... > wywołanie. Zostanie wyświetlone okno dialogowe Wywołanie testu. Zaznacz test testItemCost i kliknij przycisk OK.
- Zapisz pakiet testów.
Z menu Plik wybierz opcje Plik > Zapisz.
Uwaga: komenda Zapisz spowoduje utworzenie przez edytora testów JUnit TPTP szkieletów metod testowych w pliku shoppingCartTest_src.java.
-
Wpisz kod dla wygenerowanych metod testowych JUnit testShoppingCartConstructor i testItemCost.
- Otwórz perspektywę Java.
Z menu Plik wybierz opcje Okna > Otwórz perspektywę > Inne... > Java.
- Otwórz plik shoppingCartTest_src.java. W Nawigatorze otwórz folder projektu datapoolExample i kliknij dwukrotnie plik shoppingCartTest_src.java. Treść pliku shoppingCartTest_src.java zostanie wyświetlona w edytorze Java, włącznie z kodem konfigurowania i wykonywania pakietu testów oraz szkieletami metod dla testów testShoppingCartConstructor i testItemCost.
- Wpisz następujący kod dla metody testShoppingCartConstructor.
public void testShoppingCartConstructor()
throws Exception
{
MyShoppingCart cart = new MyShoppingCart();
Double priceOrchid = (Double)cart.myFlowers.get("Orchidea");
Double priceTulip = (Double)cart.myFlowers.get("Tulipan");
assertTrue(priceOrchid.doubleValue() == 5.99);
assertTrue(priceTulip.doubleValue() == 1.99);
}
- Wpisz następujący kod dla metody testItemCost.
public void testItemCost()
throws Exception
{
MyShoppingCart cart = new MyShoppingCart();
double priceForTwo = cart.itemCost("Orchidea", 2);
assertTrue(priceForTwo == 11.98);
}
- Zapisz plik shoppingCartTest_src.java. Z menu Plik wybierz opcje Plik > Zapisz.
- Otwórz perspektywę testu i utwórz wdrożenie testu.
Przykłady zawiera sekcja Tworzenie wdrożenia testowego.
-
Wykonaj test, korzystając z niestandardowego wdrożenia.
- W Nawigatorze testów kliknij prawym przyciskiem myszy pakiet testów shoppingCartTest_src i wybierz opcje Wykonaj jako > Wykonaj. Zostanie wyświetlone okno dialogowe konfiguracji wykonywania.
- W panelu Konfiguracje wybierz opcję Test, a następnie kliknij przycisk Nowy.
- W lewym panelu konfiguracji wykonywania (Wybierz test do wykonania) rozwiń projekt datapoolExample i wybierz pakiet testów shoppingCartTest_src.
- W prawym panelu konfiguracji wykonywania wybierz wdrożenie utworzone w sekcji Przed rozpoczęciem.
- Na karcie Dzienniki testów wyłącz opcję Użyj wartości domyślnych i wybierz folder projektu datapoolExample jako położenie.
- Kliknij przycisk Wykonaj, aby rozpocząć test.
- Kliknij dwukrotnie dziennik testu shoppingCartTest_src, który jest wyświetlony w Nawigatorze testów. Zostanie wyświetlony dziennik testu shoppingCartTest_src. Przejdź na kartę Zdarzenia, aby wyświetlić szczegóły testu. Powinny być widoczne następujące zdarzenia: rozpoczęcie pakietu testów, rozpoczęcie pętli Loop_MyShoppingCart, rozpoczęcie testu, wynik testu, zatrzymanie testu, rozpoczęcie drugiego testu, wynik drugiego testu, zatrzymanie drugiego testu, zatrzymanie pętli, wynik pakietu testów i zatrzymanie pakietu testów.

W tej procedurze utworzysz prostą pulę danych, w której będą przechowywane dane testowe. Korzystając z edytora pul danych, zdefiniujesz elementy strukturalne puli danych, w tym zmienne (kolumny), rekordy (wiersze) i klasy równoważności (grupy pokrewnych rekordów).
- Utwórz plik CSV zawierający dane testowe. Zazwyczaj dane można wyeksportować do formatu CSV z arkusza kalkulacyjnego lub bazy danych. Jednak w tym kursie będziesz wpisywać dane w edytorze tekstu.
- Wpisz następujący tekst w edytorze tekstu:
,ModelNumber::String,Description::String,Price::Double
flowers,F0001,Orchidea,5.99
flowers,F0002,Tulipan,1.99
flowers,F0003,Biała gwiazda betlejemska,6.99
flowers,F0004,Biała róża,9.99
flowers,F0005,Geranium,4.99
- Zapisz plik pod nazwą flowerData.csv w tymczasowej lokalizacji zewnętrznej.
- W środowisku Eclipse otwórz perspektywę testu.
- Z menu plik wybierz Okna > Otwórz perspektywę > Inne.
- Wybierz opcję Test i kliknij przycisk OK. Zostanie wyświetlony Nawigator testów.
- W Nawigatorze testów kliknij prawym przyciskiem myszy projekt i wybierz opcje Nowy > Element testowy... Zostanie wyświetlone okno dialogowe Nowy element testowy.
- W polu listy Kreatory rozwiń folder Zasoby testowe
i wybierz opcję Pula danych.
- Kliknij przycisk Dalej. Zostanie wyświetlone okno dialogowe Nowa pula danych.
- Wybierz folder projektu puli danych i nazwę puli danych.
Z listy istniejących projektów wybierz projekt datapoolExample. W polu Nazwa wpisz shoppingCartDatapool. Kliknij przycisk Dalej, aby kontynuować, a następnie kliknij ponownie przycisk Dalej, aby otworzyć stronę importowania pliku CSV.
- Zaimportuj plik CSV flowerData.csv.
- W polu Plik CSV kliknij przycisk Przeglądaj i znajdź plik flowerData.csv.
- Zaznacz opcję Pierwszy wiersz zawiera nazwy i sugerowane typy zmiennych . Pierwszy wiersz pliku flowerData.csv zawiera typy i nagłówki kolumn.
- Zaznacz opcję Pierwsza kolumna zawiera nazwy klas równoważności. Klasy równoważności grupują dane pokrewne. W pierwszej kolumnie pliku flowerData.csv jest określona jedna klasa równoważności o nazwie flowers.
- Kliknij przycisk Zakończ.Jeśli zostały określone początkowe wymiary puli danych, które mogą być sprzeczne z wymiarami pliku CSV, zostanie wyświetlone okno dialogowe. Kliknij przycisk Tak, aby użyć wymiarów pliku CSV. Kliknij przycisk Nie, aby użyć wcześniej określonych wymiarów początkowych (i ewentualnie obciąć dane z pliku CSV).
Zostanie wyświetlony edytor pul danych wraz z danymi zawartymi w klasie równoważności flowers.
Szczegółowe informacje o tworzeniu puli danych zawiera sekcja Tworzenie puli danych.
W tej procedurze, korzystając z interfejsu API puli danych, zastąpisz zakodowane na stałe wartości testu odwołaniami do kolumn puli danych.
Dodawanie bibliotek wymaganych przez interfejs API puli danych
Interfejs API puli danych wymaga różnych bibliotek platformy TPTP i środowiska EMF (Eclipse Modeling Framework). W tej procedurze dodasz biblioteki do ścieżki budowania Java.
- Otwórz perspektywę Java.
Z menu Plik wybierz opcje Okna> Otwórz perspektywę > Java.
- Otwórz właściwości projektu datapoolExample. W Nawigatorze lub Eksploratorze pakietów kliknij prawym przyciskiem myszy folder projektu datapoolExample i wybierz opcję Właściwości. Zostanie wyświetlone okno dialogowe Właściwości elementu datapoolExample.
- Dodaj plik tptp-models.jar do ścieżki budowania Java.
-
W lewym panelu wybierz opcję Ścieżka budowania Java.
- W prawym panelu przejdź na kartę Biblioteki i kliknij przycisk Dodaj zmienną... Zostanie wyświetlone okno dialogowe Wpis nowej zmiennej ścieżki klasy.
- Zaznacz zmienną ECLIPSE_HOME i kliknij przycisk Rozszerz... Zostanie wyświetlone okno dialogowe Rozszerzenie zmiennej. Otwórz folder plugins
> org.eclipse.tptp.platform.models_wersja i zaznacz plik
tptp-models.jar, gdzie wersja oznacza używaną wersję platformy TPTP.
- Kliknij przycisk OK, aby dodać bibliotekę.
- Dodaj plik org.eclipse.emf.common_wersja.jar do ścieżki budowania Java, gdzie wersja oznacza używaną wersję środowiska EMF.
-
W oknie dialogowym Wpis nowej zmiennej ścieżki klasy zaznacz zmienną ECLIPSE_HOME i kliknij przycisk Rozszerz...
- Otwórz folder plugins i zaznacz plik org.eclipse.emf.common_wersja.jar, gdzie wersja oznacza używaną wersję środowiska EMF.
- Kliknij przycisk OK, aby dodać bibliotekę.
- Dodaj plik org.eclipse.emf.ecore_wersja.jar do ścieżki budowania Java, gdzie wersja oznacza używaną wersję środowiska EMF.
- W oknie dialogowym Wpis nowej zmiennej ścieżki klasy zaznacz zmienną ECLIPSE_HOME i kliknij przycisk Rozszerz...
- Otwórz folder plugins i zaznacz plik org.eclipse.emf.ecore_wersja.jar, gdzie wersja oznacza używaną wersję środowiska EMF.
- Kliknij przycisk OK, aby dodać bibliotekę.
- Dodaj plik org.eclipse.core.runtime_wersja.jar do ścieżki budowania Java, gdzie wersja oznacza używaną wersję środowiska Eclipse.
- W oknie dialogowym Wpis nowej zmiennej ścieżki klasy zaznacz zmienną ECLIPSE_HOME i kliknij przycisk Rozszerz...
- Otwórz folder plugins i zaznacz plik org.eclipse.core.runtime_wersja.jar, gdzie wersja oznacza używaną wersję środowiska Eclipse.
- Kliknij przycisk OK, aby dodać bibliotekę.
- Kliknij przycisk OK, aby zamknąć okno dialogowe Właściwości.
Korzystanie z interfejsu API puli danych
W tej procedurze zmodyfikujesz klasę shoppingCartTest_src i metodę testShoppingCartConstructor, aby umożliwić korzystanie z puli danych
shoppingCartDatapool.
- Jeśli perspektywa Java nie jest otwarta, otwórz ją. Z menu Plik wybierz opcje Okna> Otwórz perspektywę > Java.
- Otwórz plik shoppingCartTest_src.java. W Nawigatorze otwórz folder projektu datapoolExample i kliknij dwukrotnie plik shoppingCartTest_src.java. Treść pliku shoppingCartTest_src.java zostanie wyświetlona w edytorze Java.
- Dodaj następujące instrukcje importowania do klasy shoppingCartTest_src.
import org.eclipse.hyades.models.common.datapool.impl.*;
import org.eclipse.hyades.execution.runtime.datapool.*;
- Zadeklaruj instancję klasy IDatapoolIterator. Ta instancja klasy będzie inicjowana w kodzie konfigurowania i wykorzystywana w metodach testowych.
public class shoppingCartTest_src extends HyadesTestCase {
IDatapoolIterator dpIterator;
//...
- Zmodyfikuj metodę setUp, aby zainicjować pulę danych. W środowisku testu JUnit TPTP metoda setUp stanowi wspólny element. Przy jej użyciu można inicjować wspólne zmienne testu. Uwaga: określ pełną ścieżkę obszaru roboczego zamiast wyrażenia <obszar roboczy> w konstruktorze java.io.File.
protected void setUp() throws Exception {
// inicjowanie fabryki pul danych
IDatapoolFactory dpFactory = new Common_DatapoolFactoryImpl();
// Ładowanie puli danych shoppingCartDatapool
IDatapool datapool = dpFactory.load(
new java.io.File("<obszar roboczy>\\datapoolExample\\shoppingCartDatapool.datapool"),
false);
// Tworzenie iteratora do przechodzenia przez pulę danych
dpIterator = dpFactory.open(datapool,"org.eclipse.hyades.datapool.iterator.DatapoolIteratorSequentialPrivate");
// Inicjowanie puli danych w celu przejścia do pierwszej klasy równoważności
dpIterator.dpInitialize(datapool,0);
}
Uwagi:
- Drugi parametr w metodzie ładowania IDatapoolFactory wskazuje, czy instancja puli danych jest współużytkowana. Jeśli ma wartość true, następuje sprawdzenie, czy w buforze pul danych znajduje się kopia puli danych. Jeśli ma wartość false, pula danych stanowi prywatną instancję. Zmodyfikowanie współużytkowanej instancji puli danych może wpłynąć na innych użytkowników i jest zalecane tylko w przypadku ograniczonych środowisk.
- Jeśli chcesz programowo edytować pulę danych import org.eclipse.hyades.edit.datapool.
- Drugi parametr w metodzie ładowania IDatapoolFactory oznacza typ iteratora. W przypadku współużytkowanych pul danych należy użyć wartości DatapoolIteratorSequentialPrivate.
- Zmodyfikuj metodę testShoppingCartConstructor, aby była wykorzystywana pula danych shoppingCartDatapool.
public void testShoppingCartConstructor()
throws Exception
{
MyShoppingCart cart = new MyShoppingCart();
// Przechodzenie przez pulę danych...
// Testowanie, czy konstruktor odpowiedni inicjuje każdy rekord kwiatu while(!dpIterator.dpDone())
{
String Description = dpIterator.dpCurrent().getCell("Opis").getStringValue();
double datapoolPrice = dpIterator.dpCurrent().getCell("Cena").getDoubleValue();
// Testowanie, czy kwiat jest uwzględniany w aplikacji
Double applicationPrice;
assertNotNull(applicationPrice = (Double)cart.myFlowers.get(Description));
// Testowanie, czy cena w aplikacji jest równa cenie w puli danych
assertTrue(applicationPrice.doubleValue() == datapoolPrice);
dpIterator.dpNext();
}
}
- Zapisz plik shoppingCartTest_src.java. Z menu Plik wybierz opcje Plik > Zapisz.
- Dodaj pulę danych do artefaktu testArtifact.
- Otwórz perspektywę testu.
W Nawigatorze testów kliknij dwukrotnie wdrożenie testDeployment, aby otworzyć je w edytorze.
- Na karcie Pary zaznacz opcję testAsset i kliknij przycisk Otwórz...
- Na karcie Zasoby testowe kliknij przycisk Dodaj.... Wybierz pulę danych i kliknij przycisk OK. Zapisz zasób.
- Wykonaj test, korzystając z niestandardowego wdrożenia.
- Otwórz perspektywę testu.
W Nawigatorze testów kliknij prawym przyciskiem myszy pakiet testów shoppingCartTest_src i wybierz opcje Wykonaj jako > Wykonaj. Zostanie wyświetlone okno dialogowe konfiguracji wykonywania.
- W lewym panelu konfiguracji wykonywania wybierz pakiet testów shoppingCartTest_src.
- W prawym panelu konfiguracji wykonywania wybierz wdrożenie utworzone w sekcji Przed rozpoczęciem.
- Na karcie Dzienniki testów wyłącz opcję Użyj wartości domyślnych i wybierz folder projektu datapoolExample jako położenie.
- Kliknij przycisk Wykonaj, aby rozpocząć test.
- Kliknij dwukrotnie nowy dziennik testu shoppingCartTest_src, który jest wyświetlony w Nawigatorze testów. Zostanie wyświetlony dziennik testu shoppingCartTest_src. Przejdź na kartę Zdarzenia, aby wyświetlić szczegóły wyników testu.