Mål:
Att skapa och accessa en datapool från ett exempel på en testtillämpning med Eclipse Test
och TPTP (plattformen för test- och prestandaverktyg).
Tids som krävs
1 timme
Innan du börjar den här självstudiekursen behöver du
-
Installera Eclipse Test och TPTP (plattformen för test- och prestandaverktyg).
- Ha grundläggande kunskaper om JUnit-testning. Mer information om JUnit-testning finns på www.junit.org.
- Konfigurera och köra agentkontrollanten som överensstämmer med din TPTP-version. Mer information finns i
Komma igång med agentkontrollanten.
Beskrivning
I den här självstudiekursen kan du skapa och testa en tillämpning
med namnet MyShoppingCart. Med Eclipse Test och TPTP utvecklar du JUnit-tester
och skapar en datapool med data för testmiljön.
Kursen visar hur du gör följande:
- Skapar ett exempel på en användartillämpning
- Konfigurerar en TPTP-testuppsättning
- Skapar en datapool och initiera testdata
- Ändrar testfall för att referera till en datapool
Här ska du utveckla klassen MyShoppingCart. I följande moment ska du använda Eclipse Test och TPTP för att utveckla en testmiljö.
- Skapa ett nytt Eclipse Java-projekt.
- Välj Arkiv > Nytt > Projekt... Guiden Nytt projekt visas.
- Välj Java-projekt i guiden och klicka på Nästa.
Sidan Skapa ett Java-projekt visas.
- Skriv datapoolExample som projektnamn och klicka på Slutför.
Projektet datapoolExample visas i navigeringsvyn.
- Skapa klassen MyShoppingCart.
- Högerklicka i navigeringsvyn på projektet datapoolExample
och välj Ny > Klass. Dialogrutan Ny Java-klass visas.
- Skriv MyShoppingCart i fältet Namn.
- Avmarkera alternativet för att skapa huvudmetoden public static void
main(String[] argument).
- Klicka på Slutför. Filen MyShoppingCart.java visas i Java-redigeraren.
- Skriv följande för källan MyShoppingCart:
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;
}
}
- Spara MyShoppingCart.java. Välj på menyn Arkiv Fil >
Spara.
Här ska du utveckla en testuppsättning för klassen MyShoppingCart. Med Eclipse Test och TPTP utvecklar du ett JUnit-test
för metoden itemCost.
- Öppna testperspektivet.
- Välj på menyn Arkiv Fönster > Öppna perspektiv >
Annat.
- Markera Test och klicka på OK. Testnavigeringsvyn visas.
- Skapa ett nytt TPTP JUnit-test.
- Högerklicka i testnavigeringsvyn på projektet datapoolExample och välj Nytt
> Testelement...
- I dialogrutan Testelement markerar du TPTP JUnit-test och klickar på Nästa. Dialogrutan Nytt testfall visas
och du uppmanas att lägga till JUnit-bibliotek. Klicka på Ja för att lägga till JUnit-bibliotek.
- Skriv shoppingCartTest_src i fältet Namn på sidan Ny JUnit-testkällkod. Välj redigeringsalternativet
I testredigerare (standard) i avsnittet Välj hur du vill redigera testfunktionaliteten.
- Klicka på Slutför. Redigeraren TPTP JUnit-test öppnas och visar testuppsättningen
shoppingCartTest_src. På sidan Översikt finns en testbeskrivning, källinformation och en lista med testmetoder. Ännu
finns inga definierade testmetoder. För självstudierkursens genererar TPTP JUnit-testredigeraren metodstycken,
varför alternativet Implementera testfunktionaliteten som kod i avsnittet Källinformation ska
avmarkeras. Mer information finns i Redigerare för JUnit-testuppsättning.
- Lägg till metoderna testItemCost och testShoppingCartConstructor.
- Klicka på fliken Testmetoder på Lägg till. Ett förvalt namn visas för testet.
- Lägg till metoden testItemCost. Skriv i testItemCost i fältet Namn. Skriv Test
för metoden MyShoppingCart.itemCost(sträng, int) i fältet Beskrivning.
- Lägg till metoden testShoppingCartConstructor. Klicka på fliken Testmetoder på Lägg till. Skriv i testShoppingCartConstructor i fältet Namn. Skriv
Test för konstruktorn MyShoppingCart.
- Konfigurera testkörningens funktionalitet.
- Lägg till en testkörningsslinga. Klicka i fliken Funktionalitet på Lägg till.. > Slinga. Skriv
Loop_MyShoppingCart i namnfältet. Skriv 1 (standardvärdet) i fältet Antal iterationer.
- Lägg till anropet testShoppingCartConstructor. Markera
Loop_MyShoppingCart och klicka på Lägg till... > anrop. Dialogrutan Testanrop
visas. Markera testShoppingCartConstructor och klicka på OK.
- Lägg till anropet testItemCost. Markera
Loop_MyShoppingCart och klicka på Lägg till... > anrop. Dialogrutan Testanrop
visas. Markera testItemCost och klicka på OK.
- Spara testuppsättningen. Välj på menyn Arkiv Fil > Spara.
Obs! Kommandot spara gör att TPTP JUnit-testredigeraren skapar
testmetodstycken i shoppingCartTest_src.java.
-
Ange kod för de skapade JUnit-testmetoderna testShoppingCartConstructor och testItemCost.
- Öppna Java-perspektivet. Välj på menyn Arkiv Fönster
> Öppna perspektiv > Annat... > Java.
- Öppna shoppingCartTest_src.java. Öppna projektmappen datapoolExample
i navigeringsvyn och dubbelklicka på shoppingCartTest_src.java. Innehållet i
shoppingCartTest_src.java visas i Java-redigeraren, inklusive kod för konfiguration
och körning av testuppsättningen samt metodstycken för testShoppingCartConstructor och testItemCost.
- Skriv följande kod för metoden testShoppingCartConstructor:
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);
}
- Skriv följande kod för metoden testItemCost:
public void testItemCost()
throws Exception
{
MyShoppingCart cart = new MyShoppingCart();
double priceForTwo = cart.itemCost("Orchid", 2);
assertTrue(priceForTwo == 11.98);
}
- Spara shoppingCartTest_src.java. Välj från menyn Arkiv Fil
> Spara.
- Öppna Testperspektiv och skapa en testutplacering. Exempel finns i
Skapa en testutplacering.
-
Kör testet med din egen utplacering.
- Högerklicka på testuppsättningen shoppingCartTest_src i testnavigeringsvyn och välj
Kör som > Kör.... Dialogrutan Kör konfiguration öppnas.
- Välj Testa och klicka sedan på Nytt i rutan Konfigurationer.
- Expandera i vänstra rutan i dialogrutan Kör konfiguration (Välj test att köra) datapoolExample och välj testuppsättningen shoppingCartTest_src.
- Välj den utplacering du har skapat i dialogrutan Kör konfigurations högra ruta.
- Avmarkera alternativet Använd standardvärden på fliken Testloggar och välj projektmappen
datapoolExample som plats.
- Klicka på Kör så att testet startar.
- Dubbelklicka på testloggen shoppingCartTest_src som visas i testnavigeringsvyn. Testloggen
shoppingCartTest_src test visas. Välj fliken Händelser så att testinformationen visas. Du bör se följande händelser:
start av testuppsättningen, start av Loop_MyShoppingCart, teststart, testutfall, teststopp, andra teststarten, andra
testutfallet, andra teststoppet, slingstopp, testuppsättningsutfall och testuppsättningsstopp.

I det här momentet ska du skapa en enkel datapool där testdata ska lagras. Med
datapoolredigeraren definierar du en datapools strukturella element, inklusive
variabler (kolumner), poster (rader) och ekvivalensklasser (grupper av relaterade poster).
- Skapa en CSV-fil (kommaavgränsad) som innehåller dina testdata. I regel kan du exportera data
i ett kalkyl- eller databasprogram till CSV-format. I den här kursen skriver du emellertid data i en textredigerare.
- Skriv följande i en textredigerare.
,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
- Spara filen som flowerData.csv på en tillfällig extern plats.
- Öppna testperspektivet i Eclipse.
- Välj på menyn Arkiv Fönster > Öppna perspektiv >
Annat.
- Markera Test och klicka på OK. Testnavigeringsvyn visas.
- Högerklicka i testnavigeringsvyn på ett
projekt och välj Nytt > Testelement... Dialogrutan Nytt testelement visas.
- Expandera i listan med guider mappen Testobjekt och
välj Datapool.
- Klicka på Nästa. Dialogrutan Ny datapool visas.
- Välj datapoolens projektmapp och namn. Välj datapoolExample
i listan med befintliga projekt. Skriv shoppingCartDatapool i fältet Namn. Klicka på Nästa
för att fortsätta och sedan på Nästa igen för att öppna CSV-filens (kommaavgränsad) importsida.
- Importera CSV-filen flowerData.csv.
- Klicka i fältet CSV-fil på Bläddra
och navigera till flowerData.csv.
- Markera alternativet Första raden
innehåller variabelnamn och föreslagna typer. Den första raden i flowerData.csv innehåller kolumnrubriker och typer.
- Markera alternativet Första kolumnen innehåller
ekvivalensklassnamn. Ekvivalensklasser
grupperar relaterade data. Den första kolumnen i filen flowerData.csv specificerar en enskild ekvivalensklass som kallas "flowers".
- Klicka på Slutför. En dialogruta visas om du specificerade
initiala datapoolsdimensioner, som kan komma i konflikt med CSV-filens dimensioner. Klicka på Ja för att använda CSV-filens
dimensioner. Klicka på Nej om du ska använda de specificerade initiala dimensionerna (och eventuellt trunkera CSV-filens data).
Datapoolsredigeraren öppnas och visar de data som finns i ekvivalensklassen "flowers".
Ingående information om hur du skapar en datapool finns i Skapa en datapool.
I det här momentet kan du med hjälp av datapools-API:n ersätta hårdkodade testvärden med
referenser till datapoolskolumner.
Lägga till bibliotek som datapools-API behöver
Datapools-API:n kräver olika bibliotek för TPTP och EMF (Eclipse Modeling
Framework - Eclipse-modelleringsramverk). I det här momentet lägger du till bibliotek till Java-byggsökvägen.
- Öppna Java-perspektivet. Välj på menyn Arkiv Fönster >
Öppna perspektiv > Java.
- Öppna egenskaperna för datapoolExample-projektet. Högerklicka på projektmappen datapoolExample i navigeringsvyn
eller Paketutforskarens fönster och välj egenskaper. Dialogrutan Egenskaper för datapoolExample visas.
- Lägg till tptp-models.jar till Java-sökvägen.
-
Markera Java-byggsökväg i den vänstra rutan.
- Välj fliken Bibliotek i högra rutan och klicka på Lägg till
variabel... Dialogrutan Ny variabelpost för klassökväg visas.
- Markera variabeln ECLIPSE_HOME och klicka på Utöka... Dialogrutan Variabelutökning visas. Öppna mappen plugins
> org.eclipse.tptp.plattform.models_Version och välj
tptp-models.jar, där Version är versionsnummer för din TPTP.
- Klicka på OK så att biblioteket läggs till.
- Lägg till org.eclipse.emf.common_Version.jar till Java-byggsökvägen, där Version avser din EMF-version.
-
Välj variabeln ECLIPSE_HOME i dialogrutan Ny variabelpost för klassökväg och klicka på Utöka...
- Öppna mappen med insticksprogram och välj
org.eclipse.emf.common_Version.jar, där Version avser din EMF-version.
- Klicka på OK så att biblioteket läggs till.
- Lägg till org.eclipse.emf.ecore_Version.jar till Java-byggsökvägen, där Version avser din EMF-version.
- Välj variabeln ECLIPSE_HOME i dialogrutan Ny variabelpost för klassökväg och klicka på Utöka...
- Öppna mappen med insticksprogram och välj org.eclipse.emf.ecore_Version.jar, där Version avser din EMF-version.
- Klicka på OK så att biblioteket läggs till.
- Lägg till org.eclipse.core.runtime_Version.jar till Java-byggsökvägen, där Version avser din version av EMF-plattform.
- Välj variabeln ECLIPSE_HOME i dialogrutan Ny variabelpost för klassökväg och klicka på Utöka...
- Öppna mappen med insticksprogram och välj org.eclipse.core.runtime_Version.jar, där Version avser din version av EMF-plattform.
- Klicka på OK så att biblioteket läggs till.
- Klicka på OK så att dialogrutan Egenskaper stängs.
Använda datapools-API
I det här momentet ändrar du klassen shoppingCartTest_src och metoden testShoppingCartConstructor för att använda
shoppingCartDatapool.
- Öppna Java-perspektivet om det behövs. Välj på menyn Arkiv Fönster >
Öppna perspektiv > Java.
- Öppna shoppingCartTest_src.java. Öppna projektmappen datapoolExample
i navigeringsvyn och dubbelklicka på shoppingCartTest_src.java. Innehållet i shoppingCartTest_src.java visas i
Java-redigeraren.
- Lägg till följande importsatser i klassen shoppingCartTest_src.
import org.eclipse.hyades.models.common.datapool.impl.*;
import org.eclipse.hyades.execution.runtime.datapool.*;
- Deklarera en IDatapoolIterator-klassförekomst. Klassförekomsten initieras i konfigurationskoden och används i testmetoder.
public class shoppingCartTest_src extends HyadesTestCase {
IDatapoolIterator dpIterator;
//...
- Ändra metoden setUp för att initiera datapoolen. I en TPTP JUnit-testmiljö, tillhandahåller metoden setUp en allmän objektuppsättning (fixtur). Med setUp kan du initiera allmänna testvariabler. Obs! Specificera
arbetsytans fullständiga sökväg på platsen <>arbetsyta i konstruktorn java.io.File.
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("<arbetsyta>\\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);
}
Obs!
- Den andra parametern i inläsningsmetoden IDatapoolFactory anger om datapoolsförekomsten delas. Om så är fallet,
dvs. sant (true), kontrolleras om datapoolens cache innehåller någon befintlig kopia av datapoolen. Om så inte är
fallet, dvs. falskt (false), är datapoolen en privat förekomst. Om en delad datapoolsförekomst ändras, kan andra användare påverkas
och därför rekommenderas detta bara för begränsade miljöer.
- Om du vill programmatiskt ändra en datapool, importerar du org.eclipse.hyades.edit.datapool.
- Den andra parametern i den öppna metoden IDatapoolFactory representerar iteratortypen. För delade
datapooler använder du DatapoolIteratorSequentialPrivate.
- Ändra metoden testShoppingCartConstructor för att använda
shoppingCartDatapool.
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();
}
}
- Spara shoppingCartTest_src.java. Välj från menyn Arkiv Fil
> Spara.
- Lägg till datapoolen i testArtifact.
- Öppna testperspektivet. Dubbelklicka i testnavigeringsvyn på testDeployment så att redigeraren öppnas.
- Välj testAsset på fliken Par och klicka på Öppna...
- Klicka på Lägg till... på fliken Testobjekt. Markera datapoolen och klicka på OK. Spara objektet.
- Kör testet med din egen utplacering.
- Öppna testperspektivet. Högerklicka på testuppsättningen shoppingCartTest_src i testnavigeringsvyn och välj
Kör som > Kör.... Dialogrutan Kör konfiguration öppnas.
- Välj testuppsättningen shoppingCartTest_src i vänstra rutan i dialogrutan Kör konfiguration.
- Välj i högra rutan den utplacering du skapade i avsnittet Innan du börjar.
- Avmarkera alternativet Använd standardvärden på fliken Testloggar och välj projektmappen
datapoolExample som plats.
- Klicka på Kör så att testet startar.
- Dubbelklicka på den nya testloggen shoppingCartTest_src som visas i testnavigeringsvyn. Testloggen
shoppingCartTest_src test visas. Välj fliken Händelser så att information om testresultatet visas.