IBM®
메인 컨텐츠로 가기
    Korea [국가변경]    이용약관
 
 
   
        제품    서비스 & 솔루션    고객지원 & 다운로드    회원 서비스    
메인 컨텐츠로 가기

한국 developerWorks  >  자바  >

JUnit 4로 뛰어들기

자바 5 주석을 사용한 효율적인 테스트

developerWorks
Go to the previous page11 페이지 중 6 페이지Go to the next page

문서 옵션

토론


제안 및 의견
피드백

튜토리얼 평가

이 컨텐츠를 개선하기 위한 도움을 주십시오.


매개변수 테스트

애플리케이션의 비즈니스 로직에서는 테스트가 제대로 될 때까지 사용자가 매우 많은 테스트를 작성해야 한다. 이전 버전의 JUnit에서 이러한 유형의 시나리오는 테스트에서 메서드에 대한 매개변수 그룹이 다양하면 각 고유 그룹에 대한 테스트 케이스를 작성해야 했기 때문에 매우 많은 불편을 초래했다.

JUnit 4에서는 매개변수 값을 지정할 수 있는 일반 테스트를 작성할 수 있게 해주는 새로운 기능이 도입되었다. 결과적으로 테스트 케이스 하나를 작성하여 이전에 작성한 각 매개변수에 대해 이를 여러 번 실행할 수 있다.

간단한 매개변수를 통한 테스트

JUnit 4에서 매개변수 테스트를 작성하는 데에는 다음과 같이 간단한 5단계로 이루어진다.

  1. 매개변수를 사용하지 않는 일반 테스트를 작성한다.
  2. Collection 유형을 반환하는 static 피더 메서드를 작성하고 @Parameter 주석으로 표시한다.
  3. 첫 번째 단계에서 정의한 일반 메서드에 필요한 매개변수 유형에 대한 클래스 멤버를 만든다.
  4. 이러한 매개변수 유형을 사용하고 이를 세 번째 단계에서 정의한 클래스 멤버와 연결하는 생성자를 만든다.
  5. @RunWith 주석을 통해 Parameterized 클래스와 함께 실행할 테스트 케이스를 지정한다.

이러한 단계들을 차례로 살펴보자.

첫 번째 단계. 일반 테스트 작성

Listing 17에서는 정규식에 대해 여러 값을 확인하는 일반 테스트를 보여준다. 여기에서는 phrasematch 값이 정의되지 않았다.


Listing 17. 일반 테스트
                    
@Test
public void verifyGoodZipCode() throws Exception{		
 Matcher mtcher = this.pattern.matcher(phrase);
 boolean isValid = mtcher.matches();		
 assertEquals("Pattern did not validate zip code", isValid, match);
}

두 번째 단계. 피더 메서드 작성

다음 단계는 피더 메서드를 작성하는 것이다. 이는 static 으로 선언해야 하고 Collection 유형을 반환해야 한다. 이 메서드는 @Parameters a주석으로 표시해야 한다. Listing 18에서와 같이 메서드 내에서 다차원 Object 배열을 만들고 이를 List로 변환한다.


Listing 18. @Parameters 주석으로 표시된 피더 메서드
                    
@Parameters
public static Collection regExValues() {
 return Arrays.asList(new Object[][] {
  {"22101", true },
  {"221x1", false },
  {"22101-5150", true },
  {"221015150", false }});
}

세 번째 단계. 클래스 멤버 두 개 작성

매개변수 유형은 Stringboolean이기 때문에 다음과 같이 클래스 멤버를 두 개 작성해야 한다.


Listing 19. 클래스 멤버 두 개 선언
                    
private String phrase;
private boolean match;

네 번째 단계. 생성자 작성

다음으로 작성하는 생성자는 Listing 20에서와 같이 클래스 멤버를 매개변수 값에 연결한다.


Listing 20. 값을 비교하는 생성자
                    
public ParametricRegularExpressionTest(String phrase, boolean match) {
 this.phrase = phrase;
 this.match = match;
}

다섯 번째 단계. Parameterized 클래스 지정

마지막으로 클래스 수준에서 이 테스트가 Listing 21에서와 같이 Parameterized 클래스로 실행되도록 지정한다.


Listing 21. Parameterized와 @RunWith 주석 지정
                    
@RunWith(Parameterized.class)
public class ParametricRegularExpressionTest {
 //...
}




위로


테스트 실행

테스트 클래스를 실행하면 일반 verifyGoodZipCode() 테스트 메서드가 Listing 18의 regExValues() 데이터 피더 메서드에 정의된 각 값 쌍에 대해 한 번씩 네 번 실행된다.

예를 들어 이 테스트를 이클립스에서 실행하면 그림 4에서와 같이 테스트 실행을 4회 했음을 보고한다.


그림 4. 이클립스에서 실행된 매개변수 테스트




위로



Go to the previous page11 페이지 중 6 페이지Go to the next page
    IBM 소개 개인정보 보호정책 문의