JUnit 테스트에서 데이터풀 액세스


목표:

Eclipse TPTP(Test and Performance Tools Platform)를 사용하여 예제 테스트 응용프로그램에서 데이터풀을 작성하고 액세스합니다.

필요한 시간

1시간

시작하기 전에

이 학습을 시작하기 전에 다음을 수행해야 합니다.

  1. Eclipse와 Eclipse TPTP(Test and Performance Tools Platform)를 설치하십시오.
  2. JUnit 테스트에 대한 기본 정보를 습득하십시오. JUnit 테스트에 대한 자세한 정보는 www.junit.org를 참조하십시오.
  3. 현재 TPTP 버전에 맞는 Agent Controller를 구성하고 실행하십시오. 자세한 정보는 Agent Controller 시작하기를 참조하십시오.


설명

이 학습에서는 MyShoppingCart 응용프로그램을 작성하고 테스트합니다. Eclipse TPTP(Test and Performance Tools Platform)를 사용하면 JUnit 테스트를 개발하고, 테스트 환경에 데이터를 제공하는 데이터풀을 작성할 수 있습니다.

이 학습에서는 다음 프로시저를 안내합니다.

  1. 샘플 사용자 응용프로그램 작성
  2. TPTP 테스트 스위트 설정
  3. 데이터풀 작성 및 테스트 데이터 초기화
  4. 데이터풀을 참조할 테스트 케이스 수정

샘플 사용자 응용프로그램 작성


이 프로시저에서는 MyShoppingCart 클래스를 개발하고 다음 프로시저에서는 Eclipse TPTP(Test and Performance Tools Platform)를 사용하여 해당 테스트 환경을 개발합니다.
  1. 새 Eclipse Java 프로젝트를 작성하십시오.
    • 파일 메뉴에서 파일 > 새로 작성 > 프로젝트...를 선택하십시오. 새 프로젝트 대화 상자가 나타납니다.
    • 마법사 목록에서 Java 프로젝트를 선택하고 다음을 클릭하십시오. Java 프로젝트 작성 페이지가 나타납니다.
    • 프로젝트 이름에 datapoolExample을 입력하고 완료를 클릭하십시오. 네비게이터 보기에 datapoolExample 프로젝트가 나타납니다.
  2. MyShoppingCart 클래스를 작성하십시오.
    • 네비게이터 보기에서 datapoolExample 프로젝트를 마우스 오른쪽 단추로 클릭하고 새로 작성 > 클래스를 선택하십시오. 새 Java 클래스 대화 상자가 나타납니다.
    • 이름 필드에 MyShoppingCart를 입력하십시오.
    • Main 메소드 public static void main(String[] args)를 작성하는 옵션을 지우십시오.
    • 완료를 클릭하십시오. Java 편집기에 MyShoppingCart.java 파일이 나타납니다.
    • 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;	    	 	    	 	     		
      	}
      }
    • MyShoppingCart.java를 저장하십시오. 파일 메뉴에서 파일 > 저장을 선택하십시오.

TPTP 테스트 스위트 설정


이 프로시저에서는 MyShoppingCart 클래스의 테스트 스위트를 개발합니다. Eclipse TPTP(Test and Performance Tools Platform)를 사용하여 itemCost 메소드의 JUnit 테스트를 개발합니다.
  1. 테스트 Perspective를 여십시오.
    • 파일 메뉴에서 창 > Perspective 열기 > 기타를 선택하십시오.
    • 테스트를 선택하고 확인을 클릭하십시오. 테스트 네비게이터가 나타납니다.
  2. 새 TPTP JUnit 테스트를 작성하십시오.
    • 테스트 네비게이터에서 datapoolExample 프로젝트를 마우스 오른쪽 단추로 클릭하고 새로 작성 > 요소 테스트...를 선택하십시오.
    • 요소 테스트 대화 상자에서 TPTP JUnit 테스트를 선택하고 다음을 클릭하십시오. 새 테스트 케이스 대화 상자가 나타나며 JUnit 라이브러리를 추가하도록 프롬프트합니다. JUnit 라이브러리를 추가하려면 를 클릭하십시오.
    • 새 JUnit 테스트 소스 코드 페이지의 이름 필드에 shoppingCartTest_src를 입력하십시오. 테스트 동작 편집 방법 선택 섹션에서 테스트 편집기에서 편집 옵션(기본값)을 선택하십시오.
    • 완료를 클릭하십시오. TPTP JUnit 테스트 편집기가 나타나며 shoppingCartTest_src 테스트 스위트가 표시됩니다. 개요 탭에는 테스트 설명, 소스 정보 및 테스트 메소드 목록이 포함됩니다. 현재 정의된 테스트 메소드가 없습니다. 이 학습의 경우, TPTP JUnit 테스트 편집기는 메소드 스텁을 생성하므로 소스 정보 섹션의 테스트 동작을 코드로 구현 옵션은 지워져야 합니다. 자세한 정보는 JUnit 테스트 스위트 편집기를 참조하십시오.
  3. testItemCost 및 testShoppingCartConstructor 메소드를 추가하십시오.
    • 테스트 메소드 탭에서 추가를 클릭하십시오. 테스트의 기본 이름이 나타납니다.
    • testItemCost 메소드를 추가하십시오. 이름 필드에 새 테스트 이름의 testItemCost를 입력하십시오. 설명 필드에 Test for the MyShoppingCart.itemCost(String, int) method를 입력하십시오.
    • testShoppingCartConstructor 메소드를 추가하십시오. 테스트 메소드 탭에서 추가를 클릭하십시오. 이름 필드에 새 테스트 이름의 testShoppingCartConstructor를 입력하십시오. 설명 필드에 Test for the MyShoppingCart constructor를 입력하십시오.
  4. 테스트 실행 동작을 구성하십시오.
    • 테스트 실행 루프를 추가하십시오. 동작 탭에서 추가.. > 루프를 클릭하십시오. 이름 필드에 Loop_MyShoppingCart를 입력하십시오. 반복 횟수 필드에 1(기본값)을 입력하십시오.
    • testShoppingCartConstructor 호출을 추가하십시오. Loop_MyShoppingCart를 선택하고 추가... > 호출을 클릭하십시오. 테스트 호출 대화 상자가 나타납니다. testShoppingCartConstructor를 선택하고 확인을 클릭하십시오.
    • testItemCost 호출을 추가하십시오. Loop_MyShoppingCart를 선택하고 추가... > 호출을 클릭하십시오. 테스트 호출 대화 상자가 나타납니다. testItemCost를 선택하고 확인을 클릭하십시오.
    • 테스트 스위트를 저장하십시오. 파일 메뉴에서 파일 > 저장을 선택하십시오.

      참고: 저장 명령을 실행하면 TPTP JUnit 테스트 편집기가 shoppingCartTest_src.java에 테스트 메소드 스텁을 작성합니다.
  5. 생성된 JUnit 테스트 메소드 testShoppingCartConstructor 및 testItemCost의 코드를 입력하십시오.
    • Java Perspective를 여십시오. 파일 메뉴에서 창 > Perspective 열기 > 기타... > Java를 선택하십시오.
    • shoppingCartTest_src.java를 여십시오. 네비게이터에서 datapoolExample 프로젝트 폴더를 열고 shoppingCartTest_src.java를 두 번 클릭하십시오. 테스트 스위트를 설정하고 실행하는 코드와 testShoppingCartConstructor 및 testItemCost의 스텁 메소드와 함께 shoppingCartTest_src.java 컨텐츠가 Java 편집기에 나타납니다.
    • 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);
      }
    • testItemCost 메소드에 대한 다음 코드를 입력하십시오.
      public void testItemCost()
      throws Exception
      {
      	MyShoppingCart cart = new MyShoppingCart();
      	double priceForTwo = cart.itemCost("Orchid", 2);
      	
      	assertTrue(priceForTwo == 11.98);
      }
    • shoppingCartTest_src.java를 저장하십시오. 파일 메뉴에서 파일 > 저장을 선택하십시오.
  6. 테스트 Perspective를 열고 테스트 배치를 작성하십시오. 예를 들어, 테스트 배치 작성을 참조하십시오.
  7. 사용자 정의 배치를 사용하여 테스트를 실행하십시오.
    • 테스트 네비게이터에서 shoppingCartTest_src 테스트 스위트를 마우스 오른쪽 단추로 클릭하고 실행 도구 > 실행...을 선택하십시오. 실행 구성 대화 상자가 나타납니다.
    • 구성 분할창에서 테스트를 선택한 후 새로 작성을 클릭하십시오.
    • 실행 구성의 왼쪽 분할창에서(실행할 테스트 선택) datapoolExample을 펼치고 shoppingCartTest_src 테스트 스위트를 선택하십시오.
    • 실행 구성의 오른쪽 분할창에서 섹션을 작성한 배치를 선택하십시오.
    • 테스트 로그 탭에서 기본값 사용 옵션을 지우고 위치에 대한 datapoolExample 프로젝트 폴더를 선택하십시오.
    • 실행을 클릭하여 테스트를 실행하십시오.
  8. 테스트 네비게이터에 나타나는 shoppingCartTest_src 테스트 로그를 두 번 클릭하십시오. shoppingCartTest_src 테스트 로그가 나타납니다. 테스트 세부사항을 보려면 이벤트 탭을 선택하십시오. 테스트 스위트 시작, Loop_MyShoppingCart 시작, 테스트 시작, 테스트 판정, 테스트 중지, 두 번째 테스트 시작, 두 번째 테스트 판정, 두 번째 테스트 중지, 루프 중지, 테스트 스위트 판정 및 테스트 스위트 중지와 같은 이벤트가 표시되어야 합니다.

데이터풀 작성 및 테스트 데이터 초기화


이 프로시저에서는 테스트 데이터를 저장할 단순 데이터풀을 작성합니다. 데이터풀 편집기를 사용하여 변수(열), 레코드(행) 및 등가 클래스(관련 레코드 그룹)와 같은 데이터풀의 구조 요소를 정의합니다.
  1. 테스트 데이터를 포함하여 CSV(쉼표로 분리) 파일을 작성하십시오. 일반적으로 스프레드시트 응용프로그램 또는 데이터베이스의 데이터를 CSV 형식으로 내보낼 수 있습니다. 그러나 이 학습에서는 텍스트 편집기에 데이터를 입력합니다.
    • 텍스트 편집기에서 다음을 입력하십시오.
      ,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
    • 임시 외부 위치에 파일을 flowerData.csv로 저장하십시오.
  2. Eclipse에서 테스트 Perspective를 여십시오.
    • 파일 메뉴에서 창 > Perspective 열기 > 기타를 선택하십시오.
    • 테스트를 선택하고 확인을 클릭하십시오. 테스트 네비게이터가 나타납니다.
  3. 테스트 네비게이터에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 새로 작성 > 테스트 요...를 선택하십시오. 새 테스트 요소 대화 상자가 나타납니다.
  4. 마법사 목록 상자에서 테스트 자산 폴더를 펼치고 데이터풀을 선택하십시오.
  5. 다음을 클릭하십시오. 새 데이터풀 대화 상자가 나타납니다.
  6. 데이터풀 프로젝트 폴더 및 데이터풀 이름을 선택하십시오. 기존 프로젝트 목록에서 datapoolExample 프로젝트를 선택하십시오. 이름 필드에 shoppingCartDatapool을 입력하십시오. 계속하려면 다음을 클릭하고 CSV(쉼표로 분리) 파일 가져오기 페이지를 열려면 다음을 다시 클릭하십시오.
  7. CSV 파일 flowerData.csv를 가져오십시오.
    • CSV 파일 필드에서 찾아보기를 클릭하여 flowerData.csv를 탐색하십시오.
    • 첫 번째 행에 변수 이름 및 제안 유형 포함 옵션을 선택하십시오. flowerData.csv의 첫 번째 행에는 열 표제와 유형이 포함됩니다.
    • 첫 번째 열에 등가 클래스 이름 포함 옵션을 선택하십시오. 등가 클래스는 관련 데이터의 그룹입니다. flowerData.csv의 첫 번째 열은 flowers라는 단일 등가 클래스를 지정합니다.
  8. 완료를 클릭하십시오. 초기 데이터풀 크기를 지정한 경우, 대화 상자가 나타납니다. 이 크기는 CSV 파일 크기와 충돌할 수 있습니다. CSV 파일의 크기를 사용하려면 를 클릭하십시오. 지정된 초기 크기를 사용하려면(CSV 파일 데이터를 자를 수 있음) 아니오를 클릭하십시오. flowers 등가 클래스에 포함된 데이터를 표시하는 데이터풀 편집기가 나타납니다.

    데이터풀 작성에 대한 자세한 정보는 데이터풀 작성을 참조하십시오.


데이터풀을 참조할 테스트 케이스 수정


이 프로시저에서는 데이터풀 API를 사용하여 하드코딩된 테스트 값을 데이터풀 열에 대한 참조로 바꿉니다.

데이터풀 API에서 필요한 라이브러리 추가

데이터풀 API에는 다양한 TPTP 및 EMF(Eclipse Modeling Framework) 라이브러리가 필요합니다. 이 프로시저에서는 이러한 라이브러리를 Java 빌드 경로에 추가합니다.
  1. Java Perspective를 여십시오. 파일 메뉴에서 창 > Perspective 열기 > Java를 선택하십시오.
  2. datapoolExample 프로젝트 특성을 여십시오. 네비게이터 또는 패키지 탐색기 창에서 datapoolExample 프로젝트 폴더를 마우스 오른쪽 단추로 클릭하고 특성을 선택하십시오. datapoolExample 특성 대화 상자가 나타납니다.
  3. tptp-models.jar을 Java 빌드 경로에 추가하십시오.
    • 왼쪽 분할창에서 Java 빌드 경로를 선택하십시오.
    • 오른쪽 분할창에서 라이브러리 탭을 선택하고 변수 추가...를 클릭하십시오. 새 변수 클래스 경로 입력 대화 상자가 나타납니다.
    • ECLIPSE_HOME 변수를 선택하고 확장...을 클릭하십시오. 변수 확장 대화 상자가 나타납니다. plugins > org.eclipse.tptp.platform.models_Version 폴더를 열고 tptp-models.jar을 선택하십시오. 여기서, Version은 TPTP 버전 번호입니다.
    • 확인을 클릭하여 라이브러리를 추가하십시오.
  4. org.eclipse.emf.common_Version.jar을 Java 빌드 경로에 추가하십시오. 여기서, Version은 EMF 버전입니다.
    • 새 변수 클래스 경로 입력 대화 상자에서 ECLIPSE_HOME 변수를 선택하고 확장...을 클릭하십시오.
    • 플러그인 폴더를 열고 org.eclipse.emf.common_Version.jar을 선택하십시오. 여기서, Version은 EMF 버전입니다.
    • 확인을 클릭하여 라이브러리를 추가하십시오.
  5. org.eclipse.emf.ecore_Version.jar을 Java 빌드 경로에 추가하십시오. 여기서, Version은 EMF 버전입니다.
    • 새 변수 클래스 경로 입력 대화 상자에서 ECLIPSE_HOME 변수를 선택하고 확장...을 클릭하십시오.
    • 플러그인 폴더를 열고 org.eclipse.emf.ecore_Version.jar을 선택하십시오. 여기서, Version은 EMF 버전입니다.
    • 확인을 클릭하여 라이브러리를 추가하십시오.
  6. org.eclipse.core.runtime_Version.jar을 Java 빌드 경로에 추가하십시오. 여기서, Version은 Eclipse 플랫폼 버전입니다.
    • 새 변수 클래스 경로 입력 대화 상자에서 ECLIPSE_HOME 변수를 선택하고 확장...을 클릭하십시오.
    • 플러그인 폴더를 열고 org.eclipse.core.runtime_Version.jar을 선택하십시오. 여기서, Version은 Eclipse 플랫폼 버전입니다.
    • 확인을 클릭하여 라이브러리를 추가하십시오.
  7. 확인을 클릭하여 특성 대화 상자를 닫으십시오.


데이터풀 API 사용

이 프로시저에서는 shoppingCartDatapool을 활용하도록 shoppingCartTest_src 클래스 및 testShoppingCartConstructor 메소드를 수정합니다.
  1. 필요한 경우 Java Perspective를 여십시오. 파일 메뉴에서 창 > Perspective 열기 > Java를 선택하십시오.
  2. shoppingCartTest_src.java를 여십시오. 네비게이터에서 datapoolExample 프로젝트 폴더를 열고 shoppingCartTest_src.java를 두 번 클릭하십시오. shoppingCartTest_src.java 컨텐츠가 Java 편집기에 나타납니다.
  3. shoppingCartTest_src 클래스에 다음 import 문을 추가하십시오.
    import org.eclipse.hyades.models.common.datapool.impl.*;
    import org.eclipse.hyades.execution.runtime.datapool.*;
  4. IDatapoolIterator 클래스 인스턴스를 선언하십시오. 이 클래스 인스턴스는 설정 코드에서 초기화되어 테스트 메소드에서 사용됩니다.
    public class shoppingCartTest_src extends HyadesTestCase {
    	
    	IDatapoolIterator dpIterator;
    	
    	//...
  5. setUp 메소드를 수정하여 데이터풀을 초기화하십시오. TPTP JUnit 테스트 환경의 경우 setUp 메소드는 공통 고정 기능을 제공합니다. setUp 메소드를 사용하면 공통 테스트 변수를 초기화할 수 있습니다. 참고: java.io.File 생성자의 <workspace>에 완전한 작업공간 경로를 지정하십시오.
    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);
    }
    참고:
    • IDatapoolFactory 로드 메소드의 두 번째 매개변수는 데이터풀 인스턴스를 공유하는지 여부를 나타냅니다. true인 경우 데이터풀 캐시에서 데이터풀의 기존 사본을 확인합니다. false인 경우 데이터풀은 개인용 인스턴스입니다. 공유 데이터풀 인스턴스를 수정하면 다른 사용자에게 영향을 줄 수 있으므로 제한된 환경에만 권장됩니다.
    • 데이터풀을 프로그램적으로 편집하려면 org.eclipse.hyades.edit.datapool을 가져오십시오.
    • IDatapoolFactory open 메소드의 두 번째 매개변수는 반복기 유형을 나타냅니다. 공유 데이터풀에는 DatapoolIteratorSequentialPrivate를 사용하십시오.
  6. testShoppingCartConstructor 메소드를 수정하여 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. shoppingCartTest_src.java를 저장하십시오. 파일 메뉴에서 파일 > 저장을 선택하십시오.
  8. testArtifact에 데이터풀을 추가하십시오.
    • 테스트 Perspective를 여십시오. 테스트 네비게이터에서 testDeployment를 두 번 클릭하여 편집기에서 여십시오.
    • 탭에서 testAsset을 선택하고 열기...를 클릭하십시오.
    • 테스트 자산 탭에서 추가...를 클릭하십시오. 데이터풀을 선택하고 확인을 클릭하십시오. 자산을 저장하십시오.
  9. 사용자 정의 배치를 사용하여 테스트를 실행하십시오.
    • 테스트 Perspective를 여십시오. 테스트 네비게이터에서 shoppingCartTest_src 테스트 스위트를 마우스 오른쪽 단추로 클릭하고 실행 도구 > 실행...을 선택하십시오. 실행 구성 대화 상자가 나타납니다.
    • 실행 구성의 왼쪽 분할창에서 shoppingCartTest_src 테스트 스위트를 선택하십시오.
    • 실행 구성의 오른쪽 분할창에서, 시작하기 전에 섹션에서 작성한 배치를 선택하십시오.
    • 테스트 로그 탭에서 기본값 사용 옵션을 지우고 위치에 대한 datapoolExample 프로젝트 폴더를 선택하십시오.
    • 실행을 클릭하여 테스트를 실행하십시오.
  10. 테스트 네비게이터에 나타나는 새 shoppingCartTest_src 테스트 로그를 두 번 클릭하십시오. shoppingCartTest_src 테스트 로그가 나타납니다. 테스트 결과 세부사항을 보려면 이벤트 탭을 선택하십시오.


관련 개념
공통 테스트 타스크 및 개념

관련 타스크
테스트 배치 작성
테스트에 변수 데이터 제공
수동으로 JUnit 테스트 작성

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