Opplæring: Få tilgang til en datapool fra en JUnit-test


Mål:

Å opprette og få tilgang til en datapool fra en eksempeltestapplikasjon ved hjelp av Eclipses plattform for test- og ytelsesverktøy (TPTP).

Nødvendig tid

1 time

Før du begynner

Før du begynner med denne opplæringen, må du:

  1. Installere Eclipse og Eclipses plattform for test- og ytelsesverktøy (TPTP).
  2. Ha en grunnleggende forståelse av JUnit-testing. Du finner mer informasjon om JUnit-testing under www.junit.org.
  3. Konfigurere og kjøre agentkontrolleren som tilsvarer TPTP-versjonen. Du finner mer informasjon under Komme i gang med agentkontrolleren.


Beskrivelse

I denne opplæringsdelen skal du opprette og teste en applikasjon kalt MyShoppingCart. Ved hjelp av Eclipses plattform for test- og ytelsesverktøy (TPTP) utvikler du JUnit-tester og oppretter en datapool som skal forsyne testmiljøet med data.

Opplæringsdelen tar deg gjennom følgende prosedyrer:

  1. Opprette et eksempel på en brukerapplikasjon
  2. Definere en TPTP-testpakke
  3. Opprette en datapool og initialisere testdata
  4. Endre testtilfeller slik at de refererer til en datapool

Opprette et eksempel på en brukerapplikasjon


I denne prosedyren utvikler du MyShoppingCart-klassen. I de etterfølgende prosedyrene skal du bruke Eclipses plattform for test- og ytelsesverktøy til å utvikle et tilsvarende testmiljø.
  1. Opprett et nytt Eclipse Java-prosjekt.
    • Fra Fil-menyen velger du Fil > Ny(tt) > Prosjekt... Du får frem dialogboksen Nytt prosjekt.
    • På Veivisere-listen velger du Java-prosjekt og klikker på Neste. Du får frem siden Opprett et Java-prosjekt.
    • Oppgi datapoolExample som Prosjektnavn og klikk på Fullfør.Prosjektet datapoolExample blir vist i Navigator-visningen.
  2. Opprett MyShoppingCart-klassen.
    • I Navigator-visningen høyreklikker du på datapoolExample-prosjektet og velger Ny(tt) > Klasse. Dialogboksen Ny Java-klasse blir vist.
    • Skriv MyShoppingCart i feltet Navn.
    • Opphev valget for opprettelse av hovedmetoden public static void main(String[] args).
    • Klikk på Fullfør. Filen MyShoppingCart.java blir vist i Java-redigeringsprogrammet.
    • Skriv dette for MyShoppingCart-kilden:
         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;	    	 	    	 	     		
      	}
      }
    • Lagre MyShoppingCart.java. Velg Fil > Lagre fra Fil-menyen.

Definere en TPTP-testpakke


I denne prosedyren utvikler du en testpakke for MyShoppingCart-klassen. Ved hjelp av Eclipses plattform for test- og ytelsesverktøy utvikler du en JUnit-test for itemCost-metoden.
  1. Åpne testperspektivet.
    • Fra Fil-menyen velger du Vindu > Åpne perspektiv > Annet.
    • Velg Test og klikk på OK. Du får frem testnavigatoren.
  2. Opprett en ny TPTP JUnit-test.
    • I testnavigatoren høyreklikker du på datapoolExample-prosjektet og velger Ny(tt) > Testelement...
    • I dialogboksen Testelement velger du TPTP JUnit-test og klikker på Neste. Du får frem dialogboksen Nytt testtilfelle, der du blir spurt om du vil legge til JUnit-biblioteker. Klikk på Ja for å legge til JUnit-biblioteker.
    • På siden Ny JUnit-testkildekode skriver du shoppingCartTest_src i feltet Navn. Under Velg hvordan testvirkemåten skal redigeres velger du alternativet I testredigeringsprogrammet (standardverdien).
    • Klikk på Fullfør. Du får frem redigeringsprogrammet for TPTP JUnit-test, der testpakken shoppingCartTest_src blir vist. Flippen Oversikt inkluderer en testbeskrivelse, kildeinformasjon og en liste over testmetoder. Det er for øyeblikket ikke definert noen testmetoder. I denne opplæringsdelen genererer redigeringsprogrammet for TPTP JUnit-test metodestubber, og alternativet Implementer testvirkemåte som kode i Kildeinformasjon-delen bør derfor ikke være valgt. Du finner mer informasjon under Redigeringsprogram for JUnit-testpakke.
  3. Legg til metodene testItemCost og testShoppingCartConstructor.
    • På flippen Testmetoder klikker du på Legg til. Det blir vist et standardnavn for testen.
    • Legg til testItemCost-metoden. I feltet Navn oppgir du testItemCost for det nye testnavnet. I feltet Beskrivelse skriver du Test for metoden MyShoppingCart.itemCost(String, int).
    • Legg til testShoppingCartConstructor-metoden. På flippen Testmetoder klikker du på Legg til. I feltet Navn oppgir du testShoppingCartConstructor for det nye testnavnet. I feltet Beskrivelse skriver du Test for konstruktøren MyShoppingCart.
  4. Konfigurer virkemåten for testutføringen.
    • Legg til en utføringssløyfe. På flippen Virkemåte klikker du på Legg til.. > Sløyfe. I feltet Navn skriver du Loop_MyShoppingCart. I feltet Antall gjentakelser skriver du 1 (standardverdien).
    • Legg til en testShoppingCartConstructor-aktivering. Velg Loop_MyShoppingCart og klikk på Legg til... > aktivering. Du får frem dialogboksen Testaktivering. Velg testShoppingCartConstructor og klikk på OK.
    • Legg til en testItemCost-aktivering. Velg Loop_MyShoppingCart og klikk på Legg til... > aktivering. Du får frem dialogboksen Testaktivering. Velg testItemCost og klikk på OK.
    • Lagre testpakken. Fra Fil-menyen velger du Fil > Lagre.

      Merk: Kommandoen Lagre får redigeringsprogrammet for TPTP JUnit-test til å opprette testmetodestubber i shoppingCartTest_src.java.
  5. Oppgi kode for de genererte JUnit-testmetodene testShoppingCartConstructor og testItemCost.
    • Åpne Java-perspektivet. Fra Fil-menyen velger du Vindu > Åpne perspektiv > Annet... > Java.
    • Åpne shoppingCartTest_src.java. I navigatoren åpner du datapoolExample-prosjektmappen og dobbeltklikker på shoppingCartTest_src.java. shoppingCartTest_src.java-innholdet blir vist i Java-redigeringsprogrammet, inkludert kode for å definere og utføre testpakken, og metodestubber for testShoppingCartConstructor og testItemCost.
    • Skriv koden nedenfor for testShoppingCartConstructor-metoden.
      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 koden nedenfor for testItemCost-metoden.
      public void testItemCost()
      throws Exception
      {
      	MyShoppingCart cart = new MyShoppingCart();
      	double priceForTwo = cart.itemCost("Orchid", 2);
      	
      	assertTrue(priceForTwo == 11.98);
      }
    • Lagre shoppingCartTest_src.java. Fra Fil-menyen velger du Fil > Lagre.
  6. Åpne testperspektivet og opprett en testdistribusjon. Du finner et eksempel under Opprette en testdistribusjon.
  7. Kjør testen med den tilpassede distribusjonen.
    • I testnavigatoren høyreklikker du på shoppingCartTest_src-testpakken og velger Kjør som > Kjør.... Du får frem konfigurasjonsdialogboksen Kjør.
    • I ruten Konfigurasjoner velger du Test og klikker deretter på Ny(tt).
    • I venstre rute i kjørekonfigurasjonen (Velg test som skal kjøres) utvider du datapoolExample og velger shoppingCartTest_src-testpakken.
    • I høyre rute i kjørekonfigurasjonen velger du distribusjonen du har opprettet.
    • På flippen Testlogger opphever du valget av Bruk standarder og velger datapoolExample-prosjektmappen for plasseringen.
    • Klikk på Kjør for å starte testen.
  8. Dobbeltklikk på shoppingCartTest_src-testloggen, som blir vist i testnavigatoren. Testloggen shoppingCartTest_src blir vist. Velg flippen Hendelser for å se testdetaljene. Du skal se følgende hendelser: starten på testpakken, starten på Loop_MyShoppingCart, starten på testen, testutfall, slutt på test, andre start på testen, andre testutfall, andre slutt på testen, slutt på sløyfe, testpakkeutfall og slutt på testpakken.

Opprette en datapool og initialisere testdata


I denne prosedyren kan du opprette en enkel datapool for lagring av testdata. Bruk redigeringsprogrammet for datapool ti å definere de strukturelle elementene i en datapool, inkludert variabler (kolonner), poster (rader) og ekvivalensklasser (grupper med beslektede poster).
  1. Opprett en CSV-fil (kommadelt) som inkluderer testdataene. Du kan vanligvis eksportere data i en regnearkapplikasjon eller database til CSV-format. Men i denne øvelsesdelen skriver du dataene i et tekstredigeringsprogram.
    • Skriv følgende i et tekstredigeringsprogram.
      ,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
    • Lagre filen som flowerData.csv på en midlertidig ekstern plassering.
  2. I Eclipse åpner du testperspektivet.
    • Fra Fil-menyen velger du Vindu > Åpne perspektiv > Annet.
    • Velg Test og klikk på OK. Du får frem testnavigatoren.
  3. I Testnavigator høyreklikker du på et prosjekt og velger Ny(tt) > Testelementt... Du får frem dialogboksen Nytt testelement.
  4. I listeboksen Veiviser utvider du mappen Testressurser og velger Datapool.
  5. Klikk på Neste. Du får frem dialogboksen Ny datapool.
  6. Velg prosjektmappen for datapoolen og datapoolnavnet. På listen over eksisterende prosjekter velger du prosjektet datapoolExample. I feltet Navn skriver du shoppingCartDatapool. Klikk på Neste for å fortsette, og deretter Neste en gang til for å åpne importsiden for CSV-fil (kommadelt).
  7. Importer CSV-filen flowerData.csv.
    • I feltet CSV-fil klikker du på Bla gjennom og navigerer til flowerData.csv.
    • Merk av for alternativet Første rad inneholder variabelnavn og foreslåtte typer. Den første raden i flowerData.csv inneholder kolonneoverskrifter og -typer.
    • Merk av for alternativet Første kolonne inneholder navn på ekvivalensklasser. Ekvivalensklasser grupperer relaterte data. Den første kolonnen i flowerData.csv oppgir en enkelt ekvivalensklasse kalt "flowers".
  8. Klikk på Fullfør. Hvis du har oppgitt de første dimensjonene for datapoolen, og disse kan komme i konflikt med CSV-fildimensjonene, får du frem en dialogboks. Klikk på Ja for å bruke dimensjonene til CSV-filen. Klikk på Nei for å bruke de oppgitte første dimensjonene (og kanskje kutte av CSV-fildataene). Du får frem redigeringsprogrammet for datapool, som viser dataene i ekvivalensklassen "flowers".

    Du finner mer informasjon om hvordan du oppretter en datapool, under Opprette en datapool.


Endre testtilfeller slik at de refererer til en datapool


I denne fremgangsmåten kan du bruke datapool-APIen til å erstatte faste testverdier med referanser til datapoolkolonner.

Legge til biblioteker som datapool-APIen trenger

Datapool-APIen krever forskjellige biblioteker for TPTP og Eclipse Modeling Framework (EMF). I denne prosedyren kan du legge til bibliotekene i Java-byggebanen.
  1. Åpne Java-perspektivet. Fra Fil-menyen velger du Vindu > Åpne perspektiv > Java.
  2. Åpne egenskapene for datapoolExample-prosjektet. I Navigator- eller Pakkeutforsker-vinduet høyreklikker du på datapoolExample-prosjektmappen og velger egenskaper. Egenskapene for dialogboksen datapoolExample blir vist.
  3. Legg til tptp-models.jar i Java-byggebanen.
    • I venstre rute velger du Java-byggebane.
    • I høyre rute velger du flippen Biblioteker og klikker på Legg til variabel.... Dialogboksen Ny variabeloppføring for klassebane blir vist.
    • Velg ECLIPSE_HOME-variabelen og klikk på Utvid.... Dialogboksen Variabelutvidelse blir vist. Åpne plugin-moduler > org.eclipse.tptp.platform.models_versjon-mappen og velg tptp-models.jar, der versjon er TPTP-versjonsnummeret.
    • Klikk på OK for å legge til biblioteket.
  4. Legg til org.eclipse.emf.common_versjon.jar i Java-byggebanen, der versjon er EMF-versjonen.
    • I dialogboksen Ny variabeloppføring for klassebane, velger du ECLIPSE_HOME-variabelen og klikker på Utvid...
    • Åpne mappen for plugin-moduler og velg org.eclipse.emf.common_versjon.jar, der versjon er EMF-versjonen.
    • Klikk på OK for å legge til biblioteket.
  5. Legg til org.eclipse.emf.ecore_versjon.jar i Java-byggebanen, der versjon er EMF-versjonen.
    • I dialogboksen Ny variabeloppføring for klassebane, velger du ECLIPSE_HOME-variabelen og klikker på Utvid...
    • Åpne mappen for plugin-moduler og velg org.eclipse.emf.ecore_versjon.jar, der versjon er EMF-versjonen.
    • Klikk på OK for å legge til biblioteket.
  6. Legg til org.eclipse.core.runtime_versjon.jar i Java-byggebanen, der versjon er versjonen av Eclipse-plattformen.
    • I dialogboksen Ny variabeloppføring for klassebane, velger du ECLIPSE_HOME-variabelen og klikker på Utvid...
    • Åpne mappen for plugin-moduler og velg org.eclipse.core.runtime_versjon.jar, der versjon er versjonen av Eclipse-plattformen.
    • Klikk på OK for å legge til biblioteket.
  7. Klikk på OK for å lukke dialogboksen Egenskaper.


Bruke API-en

I denne prosedyren endrer du klassen shoppingCartTest_src og metoden testShoppingCartConstructor slik at shoppingCartDatapool blir brukt.
  1. Hvis nødvendig, åpner du Java-perspektivet. Fra Fil-menyen velger du Vindu > Åpne perspektiv > Java.
  2. Åpne shoppingCartTest_src.java. I navigatoren åpner du datapoolExample-prosjektmappen og dobbeltklikker på shoppingCartTest_src.java. shoppingCartTest_src.java-innholdet blir vist Java-redigeringsprogrammet.
  3. Legg til følgende importsetninger i klassen shoppingCartTest_src.
    import org.eclipse.hyades.models.common.datapool.impl.*;
    import org.eclipse.hyades.execution.runtime.datapool.*;
  4. Deklarer en IDatapoolIterator-klasseforekomst. Denne klasseforekomsten blir initialisert i konfigurasjonskoden og brukt i testmetoder.
    public class shoppingCartTest_src extends HyadesTestCase {
    	
    	IDatapoolIterator dpIterator;
    	
    	//...
  5. Endre setUp-metoden slik at datapoolen initialiseres. I TPTP JUnit-testmiljøet har setUp-metoden felles fast tilbehør. Du kan bruke setUp til å initialisere felles testvariabler. Merk: Oppgi en fullt kvalifisert bane til arbeidsområdet i stedet for <workspace> i java.io.File-konstruktøren.
    protected void setUp() throws Exception {
    	// Initialiser datapool-factory
    	IDatapoolFactory dpFactory = new Common_DatapoolFactoryImpl();
    		
    	// Last inn shoppingCartDatapool-datapoolen
    	IDatapool datapool = dpFactory.load(
    			new java.io.File("<workspace>\\datapoolExample\\shoppingCartDatapool.datapool"),
    			false);
    		
    	// Opprett en iterator for å traversere datapoolen
    	dpIterator = dpFactory.open(datapool,"org.eclipse.hyades.datapool.iterator.DatapoolIteratorSequentialPrivate");
    	
    	// Initialiser datapoolen for å traversere den første ekvivalensklassen.
    	dpIterator.dpInitialize(datapool,0);
    }
    Merknader:
    • Den andre parameteren i load-metoden for IDatapoolFactory viser om datapool-forekomsten deles. Hvis verdien er "true", blir det kontrollert om det er et eksisterende eksemplar av datapoolen i datapoolens hurtigbuffer. Hvis verdien er "false", er datapoolen en privat forekomst. Hvis du endrer datapool-forekomster som deles, kan det ha innvirkning på andre brukere, og det bør derfor bare gjøres i begrensede miljøer.
    • Hvis du vil redigere en datapool programmatisk, importerer du org.eclipse.hyades.edit.datapool.
    • Den andre parameteren i open-metoden for IDatapoolFactory representerer typen iterator. Hvis du har datapooler som deles, bruker du DatapoolIteratorSequentialPrivate.
  6. Endre testShoppingCartConstructor-metoden slik at den bruker shoppingCartDatapool.
    public void testShoppingCartConstructor()
    throws Exception
    {
    	MyShoppingCart cart = new MyShoppingCart();
    		
    	// Traverser gjennnom datapoolen...
    	// Test om konstruktøren initialiserer hver "flower"-post på riktig måte
    	while(!dpIterator.dpDone())
    	{
    		String Description = dpIterator.dpCurrent().getCell("Description").getStringValue();
    		double datapoolPrice = dpIterator.dpCurrent().getCell("Price").getDoubleValue();
    		
    		// Test om "flower" er tatt hånd om i applikasjonen
    		Double applicationPrice;
    		assertNotNull(applicationPrice = (Double)cart.myFlowers.get(Description));
    		
    		// Test at applikasjonsprisen tilsvarer prisen i datapoolen
    		assertTrue(applicationPrice.doubleValue() == datapoolPrice);
    		
    		dpIterator.dpNext();
    	}
    }
  7. Lagre shoppingCartTest_src.java. Fra Fil-menyen velger du Fil > Lagre.
  8. Legg til datapoolen i testArtifact.
    • Åpne testperspektivet. I testnavigatoren dobbeltklikker du på testDeployment for å åpne den i redigeringsprogrammet.
    • På flippen Par velger du testAsset og klikker på Åpne...
    • På flippen Testressurser klikker du på Legg til.... Velg datapoolen og klikk på OK. Lagre ressursen.
  9. Kjør testen med den tilpassede distribusjonen.
    • Åpne testperspektivet. I testnavigatoren høyreklikker du på shoppingCartTest_src-testpakken og velger Kjør som > Kjør.... Du får frem konfigurasjonsdialogboksen Kjør.
    • I venstre rute i kjørekonfigurasjonen velger du shoppingCartTest_src-testpakken.
    • I høyre rute i kjørekonfigurasjonen velger du distribusjonen du har opprettet i delen Før du begynner.
    • På flippen Testlogger opphever du valget av Bruk standarder og velger datapoolExample-prosjektmappen for plasseringen.
    • Klikk på Kjør for å starte testen.
  10. Dobbeltklikk på den nye shoppingCartTest_src-testloggen, som blir vist i testnavigatoren. Testloggen shoppingCartTest_src blir vist. Velg flippen Hendelser for å se testresultatdetaljene.


Beslektede begreper
Vanlige testoppgaver og -begreper

Beslektede oppgaver
Opprette en testdistribusjon
Oppgi variabeldata for tester
Opprette en JUnit-test manuelt

(C) Copyright IBM Corporation 2000, 2006. All Rights Reserved.