Øveprogram: Opret adgang til en datapulje fra en JUnit-test


Formål:

At oprette og få adgang til en datapulje fra et eksempel på et testprogram vha. Eclipse TPTP (Test and Performance Tools Platform).

Tidsforbrug

1 time

Inden du starter

Inden du starter øveprogrammet, skal du gøre følgende

  1. Installere Eclipse og Eclipse Test and Performance Tools Platform (TPTP).
  2. Have en grundlæggende forståelse af JUnit-test. Der er flere oplysninger om JUnit-test på www.junit.org.
  3. Konfigurere og udføre den Agent Controller, som passer til din TPTP-version. Der er flere oplysninger under Getting started with the Agent Controller.


Beskrivelse

Dette øveprogram går ud på at oprette og teste et program ved navn MyShoppingCart. Du bruger Eclipse TPTP (Test and Performance Tools Platform) til at udvikle JUnit-test og oprette en datapulje, der skal levere data til testmiljøet.

Øveprogrammet indeholder følgende trinvise vejledninger:

  1. Opret et eksempelbrugerprogram
  2. Definér en TPTP-testserie
  3. Opret en datapulje, og initialisér testdata
  4. Revidér testcases, så de refererer til en datapulje

Opret et eksempelbrugerprogram


Denne fremgangsmåde viser, hvordan du udvikler klassen MyShoppingCart. I efterfølgende fremgangsmåder vil du bruge Eclipse TPTP til at udvikle et tilhørende testmiljø.
  1. Opret et nyt Eclipse Java-projekt.
    • Vælg Fil > Ny > Projekt... på menuen Fil. Dialogboksen Nyt projekt åbnes.
    • Vælg Java-projekt på listen med guider, og klik på Næste. Siden Opret et Java-projekt vises.
    • Skriv datapoolExample som projektnavn, og klik på Afslut. Projektet datapoolExample vises i oversigten Navigator.
  2. Opret klassen MyShoppingCart.
    • Højreklik i oversigten Navigator på projektet datapoolExample, og vælg Ny > Klasse. Dialogboksen Ny Java-klasse vises.
    • Skriv MyShoppingCart i feltet Navn.
    • Fjern markeringen af indstillingen til oprettelse af den overordnede metode public static void main(String[] args).
    • Klik på Afslut. Filen MyShoppingCart.java vises i Java-editoren.
    • Skriv følgende som kilde for 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;	    	 	    	 	     		
      	}
      }
    • Gem MyShoppingCart.java. Vælg Fil > Gem på menuen Fil.

Definér en TPTP-testserie


Denne fremgangsmåde viser, hvordan du udvikler en testserie til klassen MyShoppingCart. Du bruger Eclipse TPTP (Test and Performance Tools Platform) til at udvikle en JUnit-test for metoden itemCost.
  1. Åbn perspektivet Test.
    • Vælg Vindue > Åbn perspektiv > Andet.
    • Vælg Test, og klik på OK. Testnavigator vises.
  2. Opret en ny TPTP JUnit-test.
    • Højreklik på projektet datapoolExample i Testnavigator, og vælg Ny > Testelement...
    • Vælg TPTP JUnit-test i dialogboksen, og klik på Næste. Du bliver spurgt i dialogboksen Ny testcase, om du vil tilføje JUnit-biblioteker. Klik på Ja for at tilføje JUnit-biblioteker.
    • Skriv shoppingCartTest_src i feltet Navn på siden Ny JUnit-testkildekode. Vælg indstillingen I testeditoren (standardværdien) i afsnittet Vælg, hvordan testens funktionsmåde redigeres.
    • Klik på Afslut. TPTP JUnit-testeditoren vises med testserien shoppingCartTest_src. På skillebladet Oversigt vises en testbeskrivelse, kildeoplysninger og en liste med testmetoder. Der er i øjeblikket ikke defineret nogen testmetoder. I dette øveprogram genererer TPTP JUnit-testeditoren metodestubbe, så du skal ikke vælge indstillingen Implementér testens funktionsmåde som kode i afsnittet Kildeoplysninger. Der er flere oplysninger i Redigér JUnit-test.
  3. Tilføj metoderne testItemCost og testShoppingCartConstructor.
    • Klik på Tilføj på skillebladet Testmetoder. Et standardnavn på testen vises.
    • Tilføj metoden testItemCost. Skriv testItemCost i feltet Navn som navn på den nye test. Skriv Test for the MyShoppingCart.itemCost(String, int) method i feltet Beskrivelse.
    • Tilføj metoden testShoppingCartConstructor. Klik på Tilføj på skillebladet Testmetoder. Skriv testShoppingCartConstructor i feltet Navn som navn på den nye test. Skriv Test for the MyShoppingCart constructor i feltet Beskrivelse.
  4. Konfigurér funktionsmåden for testudførelsen.
    • Tilføj en testudførelsesløkke. Klik på Tilføj...> Løkke på skillebladet Funktionsmåde. Skriv Loop_MyShoppingCart i feltet Navn. Skriv 1 (standardværdien) i feltet Antal gentagelser.
    • Tilføj en start af testShoppingCartConstructor. Vælg Loop_MyShoppingCart, og klik på Tilføj...> start. Dialogboksen Teststart vises. Vælg testShoppingCartConstructor, og klik på OK.
    • Tilføj en start af testItemCost. Vælg Loop_MyShoppingCart, og klik på Tilføj...> start. Dialogboksen Teststart vises. Vælg testItemCost, og klik på OK.
    • Gem testserien. Vælg Fil > Gem på menuen Fil.

      Bemærk: Kommandoen Gem bevirker, at TPTP JUnit-testeditoren opretter metodestubbe i shoppingCartTest_src.java.
  5. Angiv kode for de genererede JUnit-testmetoder testShoppingCartConstructor og testItemCost.
    • Åbn perspektivet Java. Vælg Vindue > Åbn perspektiv > Andet... > Java.
    • Åbn shoppingCartTest_src.java. Åbn projektfolderen datapoolExample i navigatoren, og dobbeltklik på shoppingCartTest_src.java. Indholdet af shoppingCartTest_src.java vises i Java-editoren, herunder kode til opsætning og udførelse af testserien og metodestubbe til testShoppingCartConstructor og testItemCost.
    • Skriv følgende kode til 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ølgende kode til metoden testItemCost.
      public void testItemCost()
      throws Exception
      {
      	MyShoppingCart cart = new MyShoppingCart();
      	double priceForTwo = cart.itemCost("Orchid", 2);
      	
      	assertTrue(priceForTwo == 11.98);
      }
    • Gem shoppingCartTest_src.java. Vælg Fil > Gem på menuen Fil.
  6. Åbn perspektivet Test, og opret en testdistribution. Der findes et eksempel i Opret en testdistribution.
  7. Udfør testen vha. din brugerdefinerede distribution.
    • Højreklik på testserien shoppingCartTest_src i Testnavigator, og vælg Udfør som > Udfør.... Konfigurationsdialogboksen Udfør vises.
    • Vælg Test i delvinduet Konfigurationer, og klik på Ny.
    • Udvid datapoolExample i venstre delvindue (Vælg test, der skal udføres) i dialogboksen Udfør, og vælg testserien shoppingCartTest_src.
    • Vælg i højre delvindue den distribution, du oprettede i det forrige afsnit.
    • Fjern markeringen af indstillingen Brug standardværdier på skillebladet Testlogfiler, og vælg projektfolderen datapoolExample som placering.
    • Klik på Udfør for at starte testen.
  8. Dobbeltklik på testlogfilen shoppingCartTest_src, som vises i Testnavigator. Testlogfilen shoppingCartTest_src vises. Vælg skillebladet Aktiviteter for at få vist oplysningerne om testen. Du burde se følgende aktiviteter: testseriens start, start af Loop_MyShoppingCart, teststart, testdom, teststop, anden teststart, anden testdom, andet teststop, løkkestop, testseriedom og testseriestop.

Opret en datapulje, og initialisér testdata


I denne fremgangsmåde skal du oprette en simpel datapulje, som indeholder testdata. Du skal bruge datapuljeeditoren til at definere en datapuljes strukturelle elementer, herunder variabler (kolonner), records (rækker) og ækvivalensklasser (grupper med beslægtede records).
  1. Opret en CSV-fil (kommasepareret) fil, der indeholder dine testdata. Du kan normalt eksportere data i et regnearkprogram eller en database i CSV-format. I dette øveprogram skal du imidlertid skrive dataene i en teksteditor.
    • Skriv følgende i en teksteditor.
      ,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
    • Gem filen som flowerData.csv på en midlertidig, ekstern placering.
  2. Åbn perspektivet Test i Eclipse.
    • Vælg Vindue > Åbn perspektiv > Andet.
    • Vælg Test, og klik på OK. Testnavigator vises.
  3. Højreklik på et projekt i Testnavigator, og vælg Ny > Testelement... Dialogboksen Nyt testelement vises.
  4. Udvid folderen Testelementer på listen med guider, og vælg Datapulje.
  5. Klik på Næste. Dialogboksen Ny datapulje vises.
  6. Vælg datapuljens projektfolder og navn. Vælg projektet datapoolExample på listen med projekter. Skriv shoppingCartDatapool i feltet Navn. Klik på Næste for at fortsætte og derefter på Næste igen for at åbne siden til import af CSV-filen.
  7. Importér CSV-filen flowerData.csv.
    • Klik på Gennemse ud for feltet CSV-fil, og navigér til flowerData.csv.
    • Markér indstillingen Første række indeholder variabelnavne og foreslåede typer. Første række i flowerData.csv indeholder kolonneoverskrifter og typer.
    • Markér indstillingen Første kolonne indeholder navne på ækvivalensklasser. Ækvivalensklasser grupperer beslægtede data. Første kolonne i flowerData.csv angiver en enkelt ækvivalensklasse ved navn flowers.
  8. Klik på Afslut. Der vises en dialogboks, hvis du har angivet startdimensioner for datapuljen, som strider mod CSV-filens dimensioner. Klik på Ja for at bruge CSV-filens dimensioner. Klik på Nej, hvis du vil bruge de angivne startdimensioner (og muligvis afkorte dataene i CSV-filen). Datapuljeeditoren vises med de data, der er indeholdt i ækvivalensklassen flowers.

    Der er flere oplysninger om oprettelse af en datapulje i Opret en datapulje.


Revidér testcases, så de refererer til en datapulje


I denne fremgangsmåde skal du bruge datapulje-API'et til at erstatte fast definerede testværdier med referencer til datapuljekolonner.

Tilføj biblioteker, der kræves af datapulje-API'et

Datapulje-API'et kræver forskellige TPTP- og EMF-biblioteker (Eclipse Modeling Framework). Du kan tilføje bibliotekerne til Java-byggestien i denne fremgangsmåde.
  1. Åbn perspektivet Java. Vælg Vindue > Åbn perspektiv > Java.
  2. Åbn egenskaberne for projektet datapoolExample. Højreklik på projektfolderen datapoolExample i Navigator eller Package Explorer, og vælg Egenskaber. Dialogboksen Egenskaberne for datapoolExample vises.
  3. Tilføj tptp-models.jar til Java-byggestien.
    • Vælg Java-byggesti i venstre delvindue.
    • Vælg skillebladet Biblioteker i højre delvindue, og klik på Tilføj variabel... Dialogboksen Ny classpath-indgang for variabel vises.
    • Vælg variablen ECLIPSE_HOME, og klik på Udvid... Dialogboksen Variabeludvidelse vises. Åbn folderen plugins > org.eclipse.tptp.platform.models_Version, og vælg tptp-models.jar, hvor Version er versionsnummeret på din TPTP-version.
    • Klik på OK for at tilføje biblioteket.
  4. Tilføj org.eclipse.emf.common_Version.jar til Java-byggestien, hvor Version er din EMF-version.
    • Vælg variablen ECLIPSE_HOME i dialogboksen Ny classpath-indgang for variabel, og klik på Udvid...
    • Åbn folderen plugins, og vælg org.eclipse.emf.common_Version.jar, hvor Version er din EMF-version.
    • Klik på OK for at tilføje biblioteket.
  5. Tilføj org.eclipse.emf.ecore_Version.jar til Java-byggestien, hvor Version er din EMF-version.
    • Vælg variablen ECLIPSE_HOME i dialogboksen Ny classpath-indgang for variabel, og klik på Udvid...
    • Åbn folderen plugins, og vælg org.eclipse.emf.ecore_Version.jar, hvor Version er din EMF-version.
    • Klik på OK for at tilføje biblioteket.
  6. Tilføj org.eclipse.core.runtime_Version.jar til Java-byggestien, hvor Version er din Eclipse-platformsversion.
    • Vælg variablen ECLIPSE_HOME i dialogboksen Ny classpath-indgang for variabel, og klik på Udvid...
    • Åbn folderen plugins, og vælg org.eclipse.core.runtime_Version.jar, hvor Version er din Eclipse-platformsversion.
    • Klik på OK for at tilføje biblioteket.
  7. Klik på OK for at lukke dialogboksen Egenskaber.


Brug datapulje-API'et

I denne fremgangsmåde kan du ændre klassen shoppingCartTest_src og metoden testShoppingCartConstructor til at bruge datapuljen shoppingCartDatapool.
  1. Åbn perspektivet Java, hvis det ikke allerede er åbent. Vælg Vindue > Åbn perspektiv > Java.
  2. Åbn shoppingCartTest_src.java. Åbn projektfolderen datapoolExample i navigatoren, og dobbeltklik på shoppingCartTest_src.java. Indholdet af shoppingCartTest_src.java vises i Java-editoren.
  3. Tilføj følgende importsætninger til klassen shoppingCartTest_src.
    import org.eclipse.hyades.models.common.datapool.impl.*;
    import org.eclipse.hyades.execution.runtime.datapool.*;
  4. Erklær en IDatapoolIterator-klasseforekomst. Klasseforekomsten vil blive initialiseret i din definitionskode og brugt i testmetoder.
    public class shoppingCartTest_src extends HyadesTestCase {
    	
    	IDatapoolIterator dpIterator;
    	
    	//...
  5. Revidér metoden setUp for at initialisere datapuljen. Metoden setUp er en almindelig bestanddel i et TPTP JUnit-testmiljø. Du kan bruge setUp til at initialisere generelle testvariabler. Bemærk: Angiv den fuldstændige sti til dit arbejdsområde i stedet for <workspace> i konstruktøren 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("<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);
    }
    Bemærkninger:
    • Den anden parameter i metoden dpFactory.load angiver, om datapuljeforekomsten er delt. Hvis værdien er true, kontrolleres, om der findes en eksisterende kopi af datapuljen i datapuljecachen. Hvis værdien er false, er datapuljen en privat forekomst. Revidering af en delt datapulje kan påvirke andre brugere og anbefales kun til isolerede miljøer.
    • Importér org.eclipse.hyades.edit.datapool, hvis du vil redigere en datapulje programmæssigt.
    • Den anden parameter i metoden dpFactory.open repræsenterer iteratortypen. Brug DatapoolIteratorSequentialPrivate til delte datapuljer.
  6. Revidér metoden testShoppingCartConstructor, så datapuljen shoppingCartDatapool bruges.
    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();
    	}
    }
  7. Gem shoppingCartTest_src.java. Vælg Fil > Gem på menuen Fil.
  8. Tilføj datapuljen til din testartefakt.
    • Åbn perspektivet Test. Dobbeltklik på testDeployment i Testnavigator for at åbne den i editoren.
    • Vælg testAsset på skillebladet Par, og klik på Åbn...
    • Klik på Tilføj... på skillebladet Testelementer. Vælg datapuljen, og klik på OK. Gem elementet.
  9. Udfør testen vha. din brugerdefinerede distribution.
    • Åbn perspektivet Test. Højreklik på testserien shoppingCartTest_src i Testnavigator, og vælg Udfør som > Udfør.... Dialogboksen Udfør for startkonfigurationer vises.
    • Vælg testserien shoppingCartTest_src i venstre delvindue.
    • Vælg i højre delvindue den distribution, du oprettede i afsnittet Inden du starter.
    • Fjern markeringen af indstillingen Brug standardværdier på skillebladet Testlogfiler, og vælg projektfolderen datapoolExample som placering.
    • Klik på Udfør for at starte testen.
  10. Dobbeltklik på den nye testlogfil, shoppingCartTest_src, som vises i Testnavigator. Testlogfilen shoppingCartTest_src vises. Vælg skillebladet Aktiviteter for at få vist oplysninger om testresultatet.


Relaterede begreber
Generelle testopgaver og -begreber

Relaterede opgaver
Opret en testdistribution
Test med variable data
Opret en JUnit-test manuelt

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