Självstudiekurs: Accessa en datapool från ett JUnit-test


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

Innan du börjar den här självstudiekursen behöver du

  1. Installera Eclipse Test och TPTP (plattformen för test- och prestandaverktyg).
  2. Ha grundläggande kunskaper om JUnit-testning. Mer information om JUnit-testning finns på www.junit.org.
  3. 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:

  1. Skapar ett exempel på en användartillämpning
  2. Konfigurerar en TPTP-testuppsättning
  3. Skapar en datapool och initiera testdata
  4. Ändrar testfall för att referera till en datapool

Skapa ett exempel på en användartillämpning


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ö.
  1. 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.
  2. 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.

Konfigurera en TPTP-testuppsättning


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.
  1. Öppna testperspektivet.
    • Välj på menyn Arkiv Fönster > Öppna perspektiv > Annat.
    • Markera Test och klicka på OK. Testnavigeringsvyn visas.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. Öppna Testperspektiv och skapa en testutplacering. Exempel finns i Skapa en testutplacering.
  7. 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.
  8. 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.

Skapa en datapool och initiera testdata


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).
  1. 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.
  2. Öppna testperspektivet i Eclipse.
    • Välj på menyn Arkiv Fönster > Öppna perspektiv > Annat.
    • Markera Test och klicka på OK. Testnavigeringsvyn visas.
  3. Högerklicka i testnavigeringsvyn på ett projekt och välj Nytt > Testelement... Dialogrutan Nytt testelement visas.
  4. Expandera i listan med guider mappen Testobjekt och välj Datapool.
  5. Klicka på Nästa. Dialogrutan Ny datapool visas.
  6. 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.
  7. Importera CSV-filen flowerData.csv.
    • Klicka i fältet CSV-filBlä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".
  8. 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.


Ändra testfall för att referera till 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.
  1. Öppna Java-perspektivet. Välj på menyn Arkiv Fönster > Öppna perspektiv > Java.
  2. Ö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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  1. Öppna Java-perspektivet om det behövs. Välj på menyn Arkiv Fönster > Öppna perspektiv > Java.
  2. Ö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.
  3. 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.*;
  4. Deklarera en IDatapoolIterator-klassförekomst. Klassförekomsten initieras i konfigurationskoden och används i testmetoder.
    public class shoppingCartTest_src extends HyadesTestCase {
    	
    	IDatapoolIterator dpIterator;
    	
    	//...
  5. Ä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.
  6. Ä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();
    	}
    }
  7. Spara shoppingCartTest_src.java. Välj från menyn Arkiv Fil > Spara.
  8. 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.
  9. 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.
  10. 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.


Närliggande begrepp
Vanliga uppgifter och begrepp vid test

Närliggande uppgifter
Skapa en testutplacering
Tester med variabla data
Skapa ett JUnit-test manuellt

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