Lernziele:
Einen Datenpool von einer Beispieltestanwendung mit Hilfe von Eclipse TPTP (Test and
Performance Tools Platform) erstellen und darauf zugreifen.
Erforderliche Zeit
Eine Stunde
Bevor Sie dieses Lernprogramm starten, müssen Sie folgende Aufgaben ausführen:
-
Eclipse und Eclipse TPTP (Test and Performance Tools
Platform) installieren.
- Grundwissen über JUnit-Tests erwerben. Weitere Informationen zu JUnit-Tests finden Sie unter www.junit.org.
- Den Agentencontroller, der Ihrer TPTP-Version entspricht konfigurieren und ausführen. Weitere Informationen
finden Sie unter
Erste Schritte mit Agent Controller.
Beschreibung
In diesem Lerntext erstellen und testen Sie eine Anwendung mit dem Namen MyShoppingCart. Mit Hilfe von Eclipse TPTP (Test and Performance Tools Platform) entwickeln Sie JUnit-Tests und
erstellen einen Datenpool, um der Testumgebung Daten zur Verfügung zu stellen.
Dieser Lerntext führt Sie durch die folgenden Prozeduren:
- Beispielbenutzeranwendung erstellen
- TPTP-Testprogramm einrichten
- Datenpool erstellen und Testdaten initialisieren
- Testfälle ändern, um auf einen Datenpool zu verweisen
In dieser Prozedur entwickeln Sie die Klasse MyShoppingCart. In nachfolgenden Prozeduren
verwenden Sie Eclipse TPTP (Test and Performance Tools Platform), um eine entsprechende Testumgebung
zu entwickeln.
- Neues Eclipse Java-Project erstellen.
- Wählen Sie im Dateimenü Datei > Neu > Projekt... aus. Das Dialogfenster
'Neues Projekt' wird angezeigt.
- Wählen Sie in der Assistentenliste Java-Projekt aus, und klicken Sie auf Weiter.
Die Seite 'Java-Projekt erstellen' wird angezeigt.
- Geben Sie als Projektname datapoolExample ein, und klicken Sie auf Fertig stellen.
Das Projekt datapoolExample wird in der Sicht 'Navigator' angezeigt.
- Erstellen Sie die Klasse MyShoppingCart.
- Klicken Sie mit der rechten Maustaste auf das Projekt datapoolExample,
und wählen Sie Neu > Klasse aus. Das Dialogfenster 'Neue Java-Klasse'
wird angezeigt.
- Geben Sie MyShoppingCart im Feld Name ein.
- Löschen Sie die Option zum Erstellen der Hauptmethode public static void
main(String[] args).
- Klicken Sie auf 'Fertig stellen'. Die Datei MyShoppingCart.java wird im Java-Editor
angezeigt.
- Geben Sie Folgendes für die Quelle MyShoppingCart ein:
import java.util.*;
public class MyShoppingCart {
public Hashtable myFlowers;
public MyShoppingCart() {
myFlowers = new Hashtable();
myFlowers.put("Orchid", new Double(5.99));
myFlowers.put("Tulip", new Double(1.99));
myFlowers.put("White Poinsee", new Double(6.99));
myFlowers.put("White Rose", new Double(9.99));
myFlowers.put("Geraniums", 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;
}
}
- Speichern Sie MyShoppingCart.java. Wählen Sie im Dateimenü Datei >
Speichern aus.
In dieser Prozedur entwickeln Sie ein Testprogramm für die Klasse MyShoppingCart. Mit Hilfe
von Eclipse TPTP (Test and Performance Tools Platform) entwickeln Sie einen JUnit-Test
für die itemCost-Methode.
- Öffnen Sie die Perspektive 'Test'.
- Wählen Sie im Dateimenü Fenster > Perspektive öffnen >
Andere aus.
- Wählen Sie Testen aus, und klicken Sie auf OK. Die Seite 'Testnavigator' wird angezeigt.
- Erstellen Sie einen neuen TPTP-JUnit-Test.
- Klicken Sie im Testnavigator mit der rechten Maustaste auf das Projekt datapoolExample,
und wählen Sie Neu > Testelement... aus.
- Wählen Sie im Dialogfenster 'Testelement' die Option TPTP-JUnit-Test aus, und klicken Sie auf Weiter. Das Dialogfenster 'Neuer Testfall' wird angezeigt und fordert Sie auf, JUnit-Bibliotheken hinzuzufügen. Klicken Sie auf Ja, um JUnit-Bibliotheken hinzuzufügen.
- Geben Sie auf der Seite 'Neuer JUnit-Testquellcode' im Feld Name den Namen shoppingCartTest_src ein. Wählen Sie im Abschnitt Testverhalten soll bearbeitet werden in: die Bearbeitungsoption
Im Testeditor (Standardoption) aus.
- Klicken Sie auf Fertig stellen. Der TPTP-JUnit-Testeditor wird mit dem Testprogramm
shoppingCartTest_src angezeigt. Die Registerkarte 'Übersicht' umfasst eine Testbeschreibung
Quelleninformationen und eine Liste der Testmethoden. Momentan sind keine Testmethoden definiert. Der TPTP-JUnit-Testeditor generiert Methodenstubs für diesen Lerntext, so dass die Markierung für
die Option Testverhalten als Code implementieren im Abschnitt Quelleninformationen
aufgehoben werden sollte. Weitere Informationen finden Sie unter
JUnit-Testprogrammeditor.
- Fügen Sie die Methoden testItemCost und testShoppingCartConstructor hinzu.
- Klicken Sie auf der Registerkarte 'Testmethoden' auf 'Hinzufügen'. Für Ihren Test wird
ein Standardname angezeigt.
- Fügen Sie die Methode testItemCost hinzu. Geben Sie im Namensfeld testItemCost als neuen Testnamen ein. Geben Sie im Beschreibungsfeld Test
for the MyShoppingCart.itemCost(String, int) method ein.
- Fügen Sie die Methode testShoppingCartConstructor hinzu. Klicken Sie auf der Registerkarte 'Testmethoden' auf 'Hinzufügen'. Geben Sie im Namensfeld testShoppingCartConstructor als neuen Testnamen ein. Geben Sie im
Beschreibungsfeld Test for the MyShoppingCart constructor ein.
- Konfigurieren Sie das Testausführungsverhalten.
- Fügen Sie eine Testausführungsschleife hinzu. Klicken Sie auf der Registerkarte 'Verhalten'
auf Hinzufügen..
> Schleife. Geben Sie im Namensfeld Loop_MyShoppingCart ein. Geben Sie
im Feld 'Anzahl der Iterationen' den Wert 1 (Standardwert) ein.
- Fügen Sie einen Aufruf testShoppingCartConstructor hinzu. Wählen Sie
Loop_MyShoppingCart, und klicken Sie auf Hinzufügen... > Aufruf. Das
Dialogfenster 'Testaufruf' wird angezeigt. Wählen Sie testShoppingCartConstructor aus,
und klicken Sie auf OK.
- Fügen Sie einen Aufruf testItemCost. Wählen Sie
Loop_MyShoppingCart aus, und klicken Sie auf Hinzufügen... > Aufruf. Das Dialogfenster 'Testaufruf' wird angezeigt. Wählen Sie testItemCost aus,
und klicken Sie auf OK.
- Speichern Sie das Testprogramm. Wählen Sie im Dateimenü Datei > Speichern aus.
Hinweis: Der Befehl 'Speichern' bewirkt, dass der TPTP-JUnit-Testeditor Stubs für
Testmethoden in der Datei shoppingCartTest_src.java erstellt.
-
Geben Sie Code für die generierten JUnit-Testmethoden testShoppingCartConstructor und testItemCost ein.
- Öffnen Sie die Java-Perspektive. Wählen Sie im Dateimenü Fenster
> Perspektive öffnen > Andere... > Java aus.
- Öffnen Sie shoppingCartTest_src.java. Öffnen Sie im Navigator den Projektordner datapoolExample, und
klicken Sie doppelt auf shoppingCartTest_src.java. Der Inhalt von shoppingCartTest_src.java
wird im Java-Editor einschließlich des Codes zur Konfiguration und Ausführung des Testprogramms
sowie der Stubmethoden für testShoppingCartConstructor und testItemCost angezeigt.
- Geben Sie folgenden Code für die Methode testShoppingCartConstructor ein.
public void testShoppingCartConstructor()
throws Exception
{
MyShoppingCart cart = new MyShoppingCart();
Double priceOrchid = (Double)cart.myFlowers.get("Orchid");
Double priceTulip = (Double)cart.myFlowers.get("Tulip");
assertTrue(priceOrchid.doubleValue() == 5.99);
assertTrue(priceTulip.doubleValue() == 1.99);
}
- Geben Sie folgenden Code für die Methode testItemCost ein.
public void testItemCost()
throws Exception
{
MyShoppingCart cart = new MyShoppingCart();
double priceForTwo = cart.itemCost("Orchid", 2);
assertTrue(priceForTwo == 11.98);
}
- Speichern Sie die Datei shoppingCartTest_src.java. Wählen Sie im Dateimenü Datei
> Speichern aus.
- Öffnen Sie die Testperspektive und erstellen Sie eine Testimplementierung. Ein Beispiel finden Sie unter Testimplementierung erstellen.
-
Führen Sie den Test mit Hilfe Ihrer angepassten Implementierung aus.
- Klicken Sie im Testnavigator mit der rechten Maustaste auf das Testprogramm
shoppingCartTest_src, und wählen Sie Ausführen als > Ausführen... aus. Das Dialogfenster mit der Ausführungskonfiguration wird angezeigt.
- Wählen Sie im Teilfenster 'Konfigurationen' Test aus, und klicken Sie anschließend auf Neu.
- Erweitern Sie im linken Teilfenster der Ausführungskonfiguration (Auszuführenden Test auswählen)
datapoolExample, und wählen Sie das Testprogramm shoppingCartTest_src aus.
- Wählen Sie im rechten Teilfenster der Ausführungskonfiguration den Abschnitt mit der von Ihnen
erstellten Implementierung aus.
- Heben Sie auf der Registerkarte 'Testprotokoll' die Markierung für die Option
Standardeinstellungen verwenden auf, und wählen Sie den Projektordner datapoolExample
für die Position aus.
- Klicken Sie auf Ausführen, um den Test zu starten.
- Klicken Sie doppelt auf das Testprotokoll shoppingCartTest_src, das im Testnavigator angezeigt wird. Das
Testprotokoll shoppingCartTest_src wird angezeigt. Wählen Sie die Registerkarte 'Ereignisse' aus,
um die Testdetails anzuzeigen. Sie sollten die folgenden Ereignisse sehen: Start des Testprogramms,
Start von Loop_MyShoppingCart, Teststart, Testurteil, Teststopp, zweiter Teststart, Schleifenstopp,
Testprogrammurteil und Testprogrammstopp.

In dieser Prozedur erstellen Sie einen einfachen Datenpool, um die Testdaten zu speichern. Sie
definieren mit Hilfe des Datenpooleditors die strukturellen Elemente eines Datenpools einschließlich
Variablen (Spalten), Datensätzen (Zeilen) und Äquivalenzklassen (Gruppen zusammengehöriger Datensätze).
- Erstellen Sie eine CSV-Datei (mit Komma als Begrenzer) einschließlich Ihrer Testdaten. In der Regel können Sie Daten aus einer Tabellenkalkulationsanwendung oder einer Datenbank im CSV-Format
exportieren. In diesem Lerntext geben Sie die Daten in einem Texteditor ein.
- Geben Sie Folgendes in einem Texteditor ein:
,ModelNumber::String,Description::String,Price::Double
flowers,F0001,Orchid,5.99
flowers,F0002,Tulip,1.99
flowers,F0003,White Poinsee,6.99
flowers,F0004,White Rose,9.99
flowers,F0005,Geraniums,4.99
- Speichern Sie die Datei als flowerData.csv an einer temporären externen Position.
- Öffnen Sie die Testperspektive in Eclipse.
- Wählen Sie im Dateimenü Fenster > Perspektive öffnen >
Andere aus.
- Wählen Sie Testen aus, und klicken Sie auf OK. Die Seite 'Testnavigator' wird angezeigt.
- Klicken Sie im Testnavigator mit der rechten Maustaste auf
ein Projekt, und wählen Sie 'Neu' > 'Testelement'... aus.
Das Dialogfenster 'Neues Testelement' wird angezeigt.
- Erweitern Sie den Ordner 'Testressourcen' im Listenfenster des Assistenten, und wählen Sie 'Datenpool' aus.
- Klicken Sie auf 'Weiter'. Das Dialogfenster 'Neuer Datenpool' wird angezeigt.
- Wählen Sie den Projektordner und den Namen für den Datenpool aus. Wählen Sie in der Liste vorhandener Projekte das Projekt datapoolExample aus. Geben Sie im
Feld 'Name' den Namen shoppingCartDatapool ein. Klicken Sie auf 'Weiter'
um fortzufahren, und klicken Sie erneut auf 'Weiter', um die Importseite für CSV-Dateien (mit Komma als
Begrenzer) aufzurufen.
- Importieren Sie die CSV-Datei flowerData.csv.
- Klicken Sie im Feld 'CSV-Datei' auf 'Durchsuchen',
und navigieren Sie zur Datei flowerData.csv.
- Überprüfen Sie die Option 'Erste Zeile
enthält Variablennamen und Typvorschläge'. Die erste Zeile der Datei
flowerData.csv enthält Spaltenüberschriften und Typen.
- Überprüfen Sie die Option 'Erste Spalte enthält
Namen von Äquivalenzklassen'. Äquivalenzklassen gruppieren zusammengehörige Daten. Die erste Spalte der Datei flowerData.csv gibt eine einzige Äquivalenzklasse mit dem Namen 'Blumen' an.
- Klicken Sie auf 'Fertig stellen'. Wenn Sie
Anfangsdimensionen für den Datenpool angegeben haben, die mit den Dimensionen der CSV-Datei in Konflikt geraten
könnten, wird ein Dialogfenster angezeigt. Klicken Sie auf Ja, um die Dimensionen der CSV-Datei zu verwenden. Klicken Sie auf Nein, um die angegebenen Anfangsdimensionen zu verwenden (und die CSV-Dateidaten
möglicherweise abzuschneiden).
Der Datenpooleditor wird mit den Daten angezeigt, die in der Äquivalenzklasse 'Blumen' vorhanden sind.
Detaillierte Informationen zum Erstellen eines Datenpools finden Sie unter Datenpool erstellen.
In dieser Prozedur verwenden Sie die Datenpool-API, um fest codierte Testwerte durch Verweise auf
Datenpoolspalten zu ersetzen.
Bibliotheken hinzufügen, die für die Datenpool-API erforderlich sind
Die Datenpool-API erfordert
verschiedene Bibliotheken von TPTP und Eclipse Modeling Framework (EMF). In dieser Prozedur
fügen Sie die Bibliotheken Ihrem Java-Erstellungspfad hinzu.
- Öffnen Sie die Java-Perspektive. Wählen Sie im Dateimenü Fenster >
Perspektive öffnen > Java aus.
- Öffnen Sie die Projekteigenschaften von datapoolExample. Klicken Sie im Fenster Navigator oder Paketexplorer
mit der rechten Maustaste auf den Projektordner datapoolExample, und wählen Sie Eigenschaften aus. Das Dialogfenster 'Eigenschaften für datapoolExample' wird angezeigt.
- Fügen Sie dem Java-Erstellungspfad tptp-models.jar hinzu.
-
Wählen Sie im linken Teilfenster Java Build Path aus.
- Wählen Sie im rechten Teilfenster die Registerkarte Bibliotheken aus, und klicken Sie auf
Variable hinzufügen.... Das Dialogfenster 'Klassenpfadeintrag für neue Variable' wird angezeigt.
- Wählen Sie die Variable ECLIPSE_HOME aus, und klicken Sie auf Erweitern...
Das Dialogfenster 'Variablenerweiterung ' wird angezeigt. Öffnen Sie den Ordner plugins
> org.eclipse.tptp.platform.models_Version und wählen Sie
tptp-models.jar aus, wobei Version Ihre TPTP-Versionsnummer ist.
- Klicken Sie auf OK, um die Bibliothek hinzuzufügen.
- Fügen Sie dem Java-Erstellungspfad die Datei org.eclipse.emf.common_Version.jar hinzu,
wobei Version Ihre EMF-Version ist.
-
Wählen Sie im Dialogfenster 'Klassenpfadeintrag für neue Variable' die Variable ECLIPSE_HOME aus, und
klicken Sie auf Erweitern....
- Öffnen Sie den Ordner mit den Plug-ins, und wählen Sie
org.eclipse.emf.common_Version.jar aus, wobei Version Ihre EMF-Version ist.
- Klicken Sie auf OK, um die Bibliothek hinzuzufügen.
- Fügen Sie dem Java-Erstellungspfad die Datei org.eclipse.emf.ecore_Version.jar hinzu,
wobei Version Ihre EMF-Version ist.
- Wählen Sie im Dialogfenster 'Klassenpfadeintrag für neue Variable' die Variable
ECLIPSE_HOME aus, und klicken Sie auf Erweitern....
- Öffnen Sie den Ordner für die Plug-ins, und wählen Sie die Datei org.eclipse.emf.ecore_Version.jar aus,
wobei Version Ihre EMF-Version ist.
- Klicken Sie auf OK, um die Bibliothek hinzuzufügen.
- Fügen Sie dem Java-Erstellungspfad die Datei org.eclipse.core.runtime_Version.jar hinzu,
wobei Version Ihre Eclipse-Plattformversion ist.
- Wählen Sie im Dialogfenster 'Klassenpfadeintrag für neue Variable' die Variable
ECLIPSE_HOME aus, und klicken Sie auf Erweitern....
- Öffnen Sie den Ordner für die Plug-ins, und wählen Sie die Datei org.eclipse.core.runtime_Version.jar aus,
wobei Version Ihre Eclipse-Plattformversion ist.
- Klicken Sie auf OK, um die Bibliothek hinzuzufügen.
- Klicken Sie auf OK, um das Dialogfenster 'Eigenschaften' zu schließen.
Datenpool-API verwenden
In dieser Prozedur ändern Sie die Klasse shoppingCartTest_src und die Methode testShoppingCartConstructor so,
dass Sie
shoppingCartDatapool verwenden.
- Öffnen Sie bei Bedarf die Java-Perspektive. Wählen Sie im Dateimenü Fenster >
Perspektive öffnen > Java aus.
- Öffnen Sie shoppingCartTest_src.java. Öffnen Sie im Navigator den Projektordner datapoolExample, und
klicken Sie doppelt auf shoppingCartTest_src.java. Der Inhalt von shoppingCartTest_src.java wird im
Java-Editor angezeigt.
- Fügen Sie der Klasse shoppingCartTest_src folgende Importanweisungen hinzu.
import org.eclipse.hyades.models.common.datapool.impl.*;
import org.eclipse.hyades.execution.runtime.datapool.*;
- Deklarieren Sie eine Klasseninstanz IDatapoolIterator. Diese Klasseninstanz wird in Ihrem
Definitionscode initialisiert und in Testmethoden verwendet.
public class shoppingCartTest_src extends HyadesTestCase {
IDatapoolIterator dpIterator;
//...
- Ändern Sie die Methode setUp, um Ihren Datenpool zu initialisieren. In einer TPTP-JUnit-Testumgebung
stellt die Methode setUp eine einheitliches Inventar zur Verfügung. Sie können setUp verwenden,
um allgemeine Testvariablen zu initialisieren. Hinweis: Geben Sie Ihren vollständig qualifizierten
Arbeitsbereichspfad an Stelle von <workspace> im Konstruktor java.io.File an.
protected void setUp() throws Exception {
// Initialize the datapool factory
IDatapoolFactory dpFactory = new Common_DatapoolFactoryImpl();
// Load the shoppingCartDatapool datapool
IDatapool datapool = dpFactory.load(
new java.io.File("<workspace>\\datapoolExample\\shoppingCartDatapool.datapool"),
false);
// Create an iterator to traverse the datapool
dpIterator = dpFactory.open(datapool,"org.eclipse.hyades.datapool.iterator.DatapoolIteratorSequentialPrivate");
// Initialize the datapool to traverse the first equivalence class.
dpIterator.dpInitialize(datapool,0);
}
Hinweise:
- Der zweite Parameter in der Lademethode IDatapoolFactory gibt an, ob die Datenpoolinstanz gemeinsam genutzt wird. Ist dies der Fall, wird der Datenpoolcache nach einer vorhandenen Kopie des Datenpools durchsucht. Ist dies nicht der Fall, ist der Datenpool eine private Instanz. Das Ändern einer gemeinsam genutzten
Datenpoolinstanz kann andere Benutzer beeinflussen und wird nur für begrenzte Umgebungen empfohlen.
- Wenn Sie einen Datenpool über das Programm bearbeiten möchten, importieren Sie org.eclipse.hyades.edit.datapool.
- Der zweite Parameter in der offenen Methode IDatapoolFactory stellt den Iteratortyp dar. Verwenden Sie für gemeinsam genutzte Datenpools
DatapoolIteratorSequentialPrivate.
- Ändern Sie die Methode testShoppingCartConstructor, um
shoppingCartDatapool zu verwenden.
public void testShoppingCartConstructor()
throws Exception
{
MyShoppingCart cart = new MyShoppingCart();
// Traverse through datapool...
// Test if constructor initializes each flower record appropriately
while(!dpIterator.dpDone())
{
String Description = dpIterator.dpCurrent().getCell("Description").getStringValue();
double datapoolPrice = dpIterator.dpCurrent().getCell("Price").getDoubleValue();
// Test if the flower is accounted for in the application
Double applicationPrice;
assertNotNull(applicationPrice = (Double)cart.myFlowers.get(Description));
// Test that the application price equals the price in the datapool
assertTrue(applicationPrice.doubleValue() == datapoolPrice);
dpIterator.dpNext();
}
}
- Speichern Sie shoppingCartTest_src.java. Wählen Sie im Dateimenü Datei > Speichern aus.
- Fügen Sie den Datenpool Ihrem testArtifact hinzu.
- Öffnen Sie die Perspektive 'Test'. Klicken Sie im Testnavigator doppelt auf testDeployment, um den Editor zu öffnen.
- Wählen Sie auf der Registerkarte Paare testAsset aus, und klicken Sie auf Öffnen....
- Klicken Sie auf der Registerkarte Testressourcen auf Hinzufügen.... Wählen Sie den Datenpool aus, und
klicken Sie auf OK. Speichern Sie die Ressource.
- Führen Sie den Test mit Hilfe Ihrer angepassten Implementierung aus.
- Öffnen Sie die Perspektive 'Test'. Klicken Sie im Testnavigator mit der rechten Maustaste auf das Testprogramm
shoppingCartTest_src, und wählen Sie Ausführen als > Ausführen... aus. Das Dialogfenster mit der Ausführungskonfiguration wird angezeigt.
- Wählen Sie im linken Teilfenster der Ausführungskonfiguration das Testprogramm shoppingCartTest_src aus.
- Wählen Sie im rechten Teilfenster der Ausführungskonfiguration die von Ihnen im Abschnitt Vorbereitende Schritte erstellte Implementierung aus.
- Heben Sie auf der Registerkarte 'Testprotokolle' die Markierung für Standardeinstellungen verwenden auf,
und wählen Sie den Projektordner datapoolExample für die Position aus.
- Klicken Sie auf Ausführen, um den Test zu starten.
- Klicken Sie doppelt auf das neue Testprotokoll shoppingCartTest_src, das im Testnavigator angezeigt wird. Das Testprotokoll shoppingCartTest_src wird angezeigt. Wählen Sie die Registerkarte 'Ereignisse' aus,
um die Details der Testergebnisse anzuzeigen.