Zelfstudieprogramma: werken met een gegevensverzameling via een JUnit-test


Doelen:

Het maken en gebruiken van een gegevensverzameling vanuit een voorbeeldtesttoepassing met behulp van het Test and Performance Tools Platform (TPTP) van Eclipse.

Benodigde tijd

1 uur

Voordat u begint

Voordat u begint met dit zelfstudieprogramma, doet u het volgende:

  1. Installeer Eclipse en het Test and Performance Tools Platform (TPTP) van Eclipse.
  2. Zorg ervoor dat u de basisbegrippen van JUnit-tests begrijpt. Raadpleeg www.junit.org voor meer informatie over JUnit-tests.
  3. Configureer en start de Agent Controller die overeenkomt met uw versie van TPTP. Raadpleeg Aan de slag met Agent Controller voor meer informatie.


Beschrijving

In dit zelfstudieprogramma maakt u een toepassing, MyShoppingCart, die u vervolgens gaat testen. Door middel van het Test and Performance Tools Platform (TPTP) van Eclipse kunt u JUnit-tests ontwikkelen en een gegevensverzameling maken die de gegevens van de testomgeving verstrekt.

Dit zelfstudieprogramma begeleidt u bij de volgende procedures:

  1. Een voorbeeldgebruikerstoepassing maken
  2. Een TPTP-testsuite instellen
  3. Een gegevensverzameling maken en testgegevens initialiseren
  4. Testcases naar een gegevensverzameling laten verwijzen

Een voorbeeldgebruikerstoepassing maken


In deze procedure ontwikkelt u de klasse MyShoppingCart. Later gaat u een bijbehorende testomgeving ontwikkelen met het Test and Performance Tools Platform van Eclipse.
  1. Maak een nieuw Java-project.
    • Ga in het menu naar Bestand > Nieuw > Project... Het dialoogvenster 'Nieuw project' verschijnt.
    • Selecteer Java-project in de lijst met wizards en klik op Volgende. De pagina 'Nieuw Java-project' verschijnt.
    • Geef gegevensverzamelingVoorbeeld op voor de projectnaam en klik op Voltooien. Het project verschijnt in de view Navigator.
  2. Maak de klasse MyShoppingCart.
    • Klik in de Navigator met de rechtermuisknop op het project gegevensverzamelingVoorbeeld en ga naar Nieuw > Klasse. Het dialoogvenster 'Nieuwe Java-klasse' verschijnt.
    • Typ MyShoppingCart in het veld Naam.
    • Schakel de optie voor het maken van de main-methode public static void main(String[] args) uit.
    • Klik op Voltooien. Het bestand MyShoppingCart.java wordt in de Java-editor weergegeven.
    • Typ de broncode van MyShoppingCart:
         import java.util.*;
      public class MyShoppingCart {
      
      	public Hashtable myFlowers;
      	
      	public MyShoppingCart() {
      	
      		myFlowers = new Hashtable();
      		myFlowers.put("Orchidee", new Double(5.99));
      		myFlowers.put("Tulp", new Double(1.99));
      		myFlowers.put("Narcis", new Double(6.99));
      		myFlowers.put("Witte roos", 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;	    	 	    	 	     		
      	}
      }
    • Sla MyShoppingCart.java op. Ga in het menu naar Bestand > Opslaan.

Een TPTP-testsuite instellen


In deze procedure ontwikkelt u een testsuite voor de klasse MyShoppingCart. Door middel van het Test and Performance Tools Platform van Eclipse kunt u een JUnit-test ontwikkelen voor de methode itemCost.
  1. Open het perspectief Testen.
    • Ga in het menu naar Venster > Perspectief openen > Overige.
    • Selecteer Testen en klik op OK. De Testnavigator verschijnt.
  2. Maak een nieuwe JUnit-test van TPTP.
    • Klik in de Testnavigator met de rechtermuisknop op het project gegevensverzamelingVoorbeeld en ga naar Nieuw > Testelement...
    • Selecteer TPTP JUnit-test en klik op Volgende. Het dialoogvenster 'Nieuwe testcase' wordt afgebeeld, waarin u wordt gevraagd JUnit-bibliotheken toe te voegen. Klik op Ja om JUnit-bibliotheken toe te voegen.
    • Typ shoppingCartTest_src in het veld Naam van de pagina Nieuwe JUnit-testbroncode. Kies in de sectie Geef aan hoe het testgedrag wordt bewerkt de optie In de testeditor (standaard).
    • Klik op Voltooien. De editor van de JUnit-test wordt weergegeven en de testsuite shoppingCartTest_src wordt afgebeeld. Het tabblad Overzicht bevat een testbeschrijving, broninformatie en een lijst van testmethoden. Er zijn geen testmethoden gedefinieerd. In dit zelfstudieprogramma zal de JUnit-testedtor methodestubs genereren, zodat de optie Testgedrag als code implementeren van de sectie Brongegevens moet worden uitgeschakeld. Raadpleeg Editor van JUnit-testsuites voor meer informatie.
  3. Voeg de methoden testItemCost en testShoppingCartConstructor toe.
    • Klik op het tabblad Testmethoden op Toevoegen. De test krijgt een standaardnaam.
    • Voeg de methode testItemCost toe. Typ testItemCost in het veld Naam. Typ Test voor de methode MyShoppingCart.itemCost(String, int) in het veld Beschrijving.
    • Voeg de methode testShoppingCartConstructor toe. Klik op het tabblad Testmethoden op Toevoegen. Typ testShoppingCartConstructor in het veld Naam. Typ Beschrijving voor de constructor MyShoppingCart.
  4. Configureer het gedrag van de testuitvoering.
    • Voeg een testuitvoeringslus toe. Ga op het tabblad Gedrag naar Toevoegen.. > Lus. Typ Loop_MyShoppingCart in het veld Naam. Typ 1 (de standaardwaarde) in het veld Aantal herhalingen.
    • Voeg de aanroep testShoppingCartConstructor toe. Selecteer Loop_MyShoppingCart en ga naar Toevoegen... > Aanroep. Het dialoogvenster Testaanroep verschijnt. Selecteer testShoppingCartConstructor en klik op OK.
    • Voeg de methode testItemCost toe. Selecteer Loop_MyShoppingCart en ga naar Toevoegen... > Aanroep. Het dialoogvenster Testaanroep verschijnt. Selecteer testItemCost en klik op OK.
    • Sla de testsuite op. Ga in het menu naar Bestand > Opslaan.

      Opmerking: Als u op Opslaan klikt, worden door de TPTP-editor van JUnit-tests methodestubs gemaakt in shoppingCartTest_src.java.
  5. Typ code voor de gegenereerde JUnit-testmethoden testShoppingCartConstructor en testItemCost.
    • Open het perspectief Java. Ga in het menu naar Venster > Perspectief openen> Overige... > Java.
    • Open shoppingCartTest_src.java. Open de map van het project gegevensverzamelingVoorbeeld in de Navigator en dubbelklik op shoppingCartTest_src.java. De inhoud van shoppingCartTest_src.java wordt afgebeeld in de Java-editor, inclusief code voor het instellen en het uitvoeren van de testsuite, alsmede methodestubs voor testShoppingCartConstructor en testItemCost.
    • Typ de volgende code voor de methode testShoppingCartConstructor.
      public void testShoppingCartConstructor()
      throws Exception
      {
      	MyShoppingCart cart = new MyShoppingCart();
      	Double priceOrchid = (Double)cart.myFlowers.get("Orchidee");
      	Double priceTulip = (Double)cart.myFlowers.get("Tulp");
      	
      	assertTrue(priceOrchid.doubleValue() == 5.99);
      	assertTrue(priceTulip.doubleValue() == 1.99);
      }
    • Typ de volgende code voor de methode testItemCost.
      public void testItemCost()
      throws Exception
      {
      	MyShoppingCart cart = new MyShoppingCart();
      	double priceForTwo = cart.itemCost("Orchidee", 2);
      	
      	assertTrue(priceForTwo == 11.98);
      }
    • Sla shoppingCartTest_src.java op. Ga in het menu naar Bestand > Opslaan.
  6. Open het perspectief Testen en maak een testingebruikname. Raadpleeg Een testingebruikname maken voor een voorbeeld.
  7. Voer de test uit met behulp van uw aangepaste ingebruikname.
    • Klik in de Testnavigator met de rechtermuisknop op de testsuite shoppingCartTest_src en ga naar Uitvoeren als > Uitvoeren.... Het dialoogvenster Uitvoeren verschijnt.
    • Selecteer Testen in het venster Configuraties en klik vervolgens op Nieuw.
    • Vouw aan de linkerkant van de uitvoeringsconfiguratie (Selecteer de test die u wilt uitvoeren) gegevensverzamelingVoorbeeld uit en kies de testsuite shoppingCartTest_src.
    • Selecteer de testingebruikname die u hebt gemaakt aan de rechterkant van de uitvoeringsconfiguratie.
    • Schakel op het tabblad Testlogboeken het aankruisvakje Standaardwaarden gebruiken uit en selecteer de map van het project gegevensverzamelingVoorbeeld als locatie.
    • Klik op Uitvoeren om de test te starten.
  8. Dubbelklik op het testlogboek van shoppingCartTest_src, dat in de Testnavigator wordt weergegeven. Het testlogboek van shoppingCartTest_src verschijnt. Selecteer het tabblad Events om de testdetails te bekijken. De volgende events moeten worden weergegeven: starten van testsuite, starten van Loop_MyShoppingCart, starten/beoordelen/stoppen van test, starten/beoordelen/stoppen van tweede test, stoppen van lus, beoordelen van testsuite en stoppen van testsuite.

Een gegevensverzameling maken en testgegevens initialiseren


In deze procedure maakt u een eenvoudige gegevensverzameling voor het opslaan van testgegevens. In de editor voor gegevensverzamelingen kunt u de structurele elementen van een gegevensverzameling definiëren, zoals variabelen (kolommen), records (rijen) en gelijkwaardigheidscategorieën (groepen verwante records).
  1. Maak een CSV-bestand (door komma's gescheiden waarden) met de testgegevens. U kunt gegevens in een spreadsheettoepassing of een database meestal wel in CSV-indeling exporteren. In dit zelfstudieprogramma typt u de gegevens echter in een editor.
    • Voer het volgende in.
      ,Modelnummer::String,Beschrijving::String,Prijs::Double
      bloemen,F0001,Orchidee,5.99
      bloemen,F0002,Tulp,1.99
      bloemen,F0003,Narcis,6.99
      bloemen,F0004,Witte roos,9.99
      bloemen,F0005,Geraniums,4.99
    • Sla het bestand op als bloemGegevens.csv in een tijdelijke externe locatie.
  2. Open het perspectief Testen in Eclipse.
    • Ga in het menu naar Venster > Perspectief openen > Overige.
    • Selecteer Testen en klik op OK. De Testnavigator verschijnt.
  3. Klik in de Testnavigator met de rechtermuisknop op een project en ga naar Nieuw > Testelement... Het dialoogvenster Nieuw testelement verschijnt.
  4. Vouw in de lijst Wizards de map Testattributen uit en selecteer Gegevensverzameling.
  5. Klik op Volgende. Het dialoogvenster Nieuwe gegevensverzameling verschijnt.
  6. Kies de projectmap en de naam van de gegevensverzameling. Selecteer het project gegevensverzamelingVoorbeeld in de lijst van bestaande projecten. Typ shoppingCartDatapool in het veld Naam. Klik op Volgende om verder te gaan en klik vervolgens opnieuw op Volgende om de pagina voor het importeren van een CSV-bestand te openen.
  7. Importeer het bestand bloemGegevens.csv.
    • Klik in het veld CSV-bestand op Bladeren en navigeer naar bloemGegevens.csv.
    • Markeer het vakje De eerste rij bevat variabelennamen en voorgestelde typen. De eerste rij van bloemGegevens.csv bevat immers kolomkoppen en typen.
    • Markeer het vakje De eerste kolom bevat namen van gelijkwaardigheidscategorieën. Een gelijkwaardigheidscategorie groepeert verwante gegevens. In de eerste kolom van bloemGegevens.csv staat namelijk één gelijkwaardigheidscategorie, "bloemen".
  8. Klik op Voltooien. Als u beginafmetingen voor de gegevensverzameling hebt opgegeven die strijdig zijn met de afmetingen van het CSV-bestand, wordt een dialoogvenster weergegeven. Klik op Ja om de afmetingen van het CSV-bestand te hanteren. Klik op Nee om de door u opgegeven beginafmetingen toe te passen (waardoor mogelijk niet alle gegevens van het CSV-bestand worden geïmporteerd). De editor voor gegevensverzamelingen wordt weergegeven en de gegevens van de gelijkwaardigheidscategorie "bloemen" worden afgebeeld.

    Raadpleeg Een gegevensverzameling maken voor gedetailleerde informatie over het maken van een gegevensverzameling.


Testcases naar een gegevensverzameling laten verwijzen


In deze procedure gebruikt u de gegevensverzameling-API om hardgecodeerde testwaarden te vervangen door verwijzingen naar gegevensverzamelingkolommen.

Bibliotheken toevoegen die voor de gegevensverzameling-API vereist zijn

De gegevensverzameling-API vereist diverse TPTP- en EMF-bibliotheken (Eclipse Modeling Framework). In deze procedure voegt u de bibliotheken aan het Java-buildpad toe.
  1. Open het perspectief Java. Ga in het menu naar Venster > Perspectief openen > Java.
  2. Open de eigenschappen van het project gegevensverzamelingVoorbeeld. Klik in de Navigator of de Pakketverkenner met de rechtermuisknop op de map van het project gegevensverzamelingVoorbeeld en kies Eigenschappen. Het dialoogvenster Eigenschappen voor gegevensverzamelingVoorbeeld verschijnt.
  3. Voeg tptp-models.jar aan het Java-buildpad toe.
    • Selecteer Java-buildpad aan de linkerkant.
    • Selecteer het tabblad Bibliotheken aan de rechterkant en klik op Variabele toevoegen... Het dialoogvenster 'Nieuwe klassenpadvermelding van variabele' verschijnt.
    • Selecteer de variabele ECLIPSE_HOME en klik op Uitbreiden... Het dialoogvenster Variabele-uitbreiding verschijnt. Open de map plugins > org.eclipse.tptp.platform.models_Versie en selecteer tptp-models.jar. Vervang Versie door uw versienummer van TPTP.
    • Klik op OK om de bibliotheek toe te voegen.
  4. Voeg org.eclipse.emf.common_Versie.jar aan het Java-buildpad toe, waarbij u Versie door uw versie van EMF vervangt.
    • Selecteer de variabele ECLIPSE_HOME in het dialoogvenster 'Nieuwe klassenpadvermelding van variabele' en klik op Uitbreiden...
    • Open de pluginsmap en selecteer org.eclipse.emf.common_Versie.jar, waarbij u Versie door uw versie van EMF vervangt.
    • Klik op OK om de bibliotheek toe te voegen.
  5. Voeg Versie.jar aan het Java-buildpad toe, waarbij u Versie door uw versie van EMF vervangt.
    • Selecteer de variabele ECLIPSE_HOME in het dialoogvenster 'Nieuwe klassenpadvermelding van variabele' en klik op Uitbreiden...
    • Open de pluginsmap en selecteer org.eclipse.emf.ecore_Versie.jar, waarbij u Versie door uw versie van EMF vervangt.
    • Klik op OK om de bibliotheek toe te voegen.
  6. Voeg org.eclipse.core.runtime_Versie.jar aan het Java-buildpad toe, waarbij u Versie door uw versie van het Eclise-platform vervangt.
    • Selecteer de variabele ECLIPSE_HOME in het dialoogvenster 'Nieuwe klassenpadvermelding van variabele' en klik op Uitbreiden...
    • Open de pluginsmap en selecteer org.eclipse.core.runtime_Versie.jar, waarbij u Versie door uw versie van het Eclipse-platform vervangt.
    • Klik op OK om de bibliotheek toe te voegen.
  7. Klik op OK om het dialoogvenster Eigenschappen te sluiten.


De gegevensverzameling-API gebruiken

In deze procedure wijzigt u de klasse shoppingCartTest_src en de methode testShoppingCartConstructor voor het benutten van shoppingCartDatapool.
  1. Open zo nodig het perspectief Java. Ga in het menu naar Venster > Perspectief openen > Java.
  2. Open shoppingCartTest_src.java. Open de map van het project gegevensverzamelingVoorbeeld in de Navigator en dubbelklik op shoppingCartTest_src.java. De inhoud van shoppingCartTest_src.java wordt in de Java-editor geopend.
  3. Voeg de volgende import-instructies aan de klasse shoppingCartTest_src toe.
    import org.eclipse.hyades.models.common.datapool.impl.*;
    import org.eclipse.hyades.execution.runtime.datapool.*;
  4. Declareer de klasse-instance IDatapoolIterator. Deze klasse-instance wordt geïnitialiseerd in de instellingscode en gebruikt in testmethoden.
    public class shoppingCartTest_src extends HyadesTestCase {
    	
    	IDatapoolIterator dpIterator;
    	
    	//...
  5. Wijzig de methode setUp voor het initialiseren van de gegevensverzameling. De methode setUp heeft een vaste opzet in een TPTP JUnit-testomgeving. U kunt setUp gebruiken om algemene testvariabelen te initialiseren. Opmerking: Geef in de constructor java.io.File het volledig gekwalificeerde pad van het werkgebied op in plaats van <werkgebied>.
    protected void setUp() throws Exception {
    	// De gegevensverzameling-factory initialiseren
    	IDatapoolFactory dpFactory = new Common_DatapoolFactoryImpl();
    		
    	// De gegevensverzameling shoppingCartDatapool laden
    	IDatapool datapool = dpFactory.load(
    			new java.io.File("<werkgebied>\\gegevensverzamelingVoorbeeld\\shoppingCartDatapool.datapool"),
    			false);
    		
    	// Een herhalingsvariabele instellen voor het doorlopen van de gegevensverzameling
    	dpIterator = dpFactory.open(datapool,"org.eclipse.hyades.datapool.iterator.DatapoolIteratorSequentialPrivate");
    	
    	// De gegevensverzameling initialiseren voor het doorlopen van de eerste gelijkwaardigheidscategorie.
    	dpIterator.dpInitialize(datapool,0);
    }
    Opmerkingen:
    • De tweede parameter van de IDatapoolFactory-laadmethode geeft aan of de instance van de gegevensverzameling voor gemeenschappelijk gebruik beschikbaar is gesteld. Als de parameter true is, wordt de gegevensverzameling-cache gecontroleerd op bestaande exemplaren van de gegevensverzameling. Als de parameter false is, is een gegevensverzameling een niet-gemeenschappelijke instance. Het wijzigen van een gemeenschappelijke gegevensverzameling-instance kan van invloed zijn op andere gebruikers en wordt alleen aanbevolen voor beperkte omgevingen.
    • Als u een gegevensverzameling via code wilt kunnen bewerken, importeert u org.eclipse.hyades.edit.datapool.
    • De tweede parameter van de IDatapoolFactory-openingsmethode geeft het type herhalingsvariabele aan. Gebruik DatapoolIteratorSequentialPrivate voor gemeenschappelijke gegevensverzamelingen.
  6. Wijzig de methode testShoppingCartConstructor, zodat deze shoppingCartDatapool benut.
    public void testShoppingCartConstructor()
    throws Exception
    {
    	MyShoppingCart cart = new MyShoppingCart();
    		
    	// Gegevensverzameling doorlopen...
    	// Testen of elk bloemrecord juist wordt geïnitialiseerd door de constructor
    	while(!dpIterator.dpDone())
    	{
    		String Description = dpIterator.dpCurrent().getCell("Beschrijving").getStringValue();
    		double datapoolPrice = dpIterator.dpCurrent().getCell("Prijs").getDoubleValue();
    		
    		// Testen of de bloem herkend wordt in de toepassing
    		Double applicationPrice;
    		assertNotNull(applicationPrice = (Double)cart.myFlowers.get(Description));
    		
    		// Testen of de prijs van de toepassing gelijk is aan de prijs van de gegevensverzameling
    		assertTrue(applicationPrice.doubleValue() == datapoolPrice);
    		
    		dpIterator.dpNext();
    	}
    }
  7. Sla shoppingCartTest_src.java op. Ga in het menu naar Bestand > Opslaan.
  8. Voeg de gegevensverzameling aan uw testArtefact toe.
    • Open het perspectief Testen. Dubbelklik in de Testnavigator op testIngebruikname om deze in de editor te openen.
    • Selecteer testAttribuut op het tabblad Paren en klik op Openen...
    • Klik op het tabblad Testattributen op Toevoegen.... Selecteer de gegevensverzameling en klik op OK. Sla het attribuut op.
  9. Voer de test uit met behulp van uw aangepaste ingebruikname.
    • Open het perspectief Testen. Klik in de Testnavigator met de rechtermuisknop op de testsuite shoppingCartTest_src en ga naar Uitvoeren als > Uitvoeren.... Het dialoogvenster Uitvoeren verschijnt.
    • Kies de testsuite shoppingCartTest_src aan de linkerkant van de uitvoeringsconfiguratie.
    • Selecteer de testingebruikname die u in de sectie Voordat u begint hebt gemaakt aan de rechterkant van de uitvoeringsconfiguratie.
    • Schakel op het tabblad Testlogboeken het aankruisvakje Standaardwaarden gebruiken uit en selecteer de map van het project gegevensverzamelingVoorbeeld als locatie.
    • Klik op Uitvoeren om de test te starten.
  10. Dubbelklik op het nieuwe testlogboek van shoppingCartTest_src, dat in de Testnavigator wordt weergegeven. Het testlogboek van shoppingCartTest_src verschijnt. Selecteer het tabblad Events om de testresultaten te bekijken.


Verwante concepten
Veelvoorkomende testtaken en -concepten

Verwante taken
Een testingebruikname maken
Tests opgeven met variabele gegevens
Een JUnit-test handmatig maken

(C) Copyright IBM Corporation 2000, 2006. Alle rechten voorbehouden.