Java 단위테스트 Junit 에서 Suite 로 클래스 집합 테스트 하기

자바(JAVA)

Java 단위테스트 Junit 에서 Suite 로 클래스 집합 테스트 하기

 

개발환경 : window 7 64bit, Eclipse Kepler, Android 4.2.2

 

테스트할 클래스가 하나가 아니라 여럿이라면 묶어서 하고 할 것이다.

여러 경우의 수를 만들어 한꺼번에 테스트 하는 것이다. 이런 다중 테스트를

위해 Junit Suite 를 만들었다. 테스트 러너가 스위트를 실행시키면

어떤 테스트 케이스를 실행시킬지 스위트가 결정한다.

 

기본 기능은 스위트에 포함된 클래스중 @Test 어노테이션이 들어간

함수를 인식하고 테스트가 이루어진다. 먼저 주요 어노테이션 두개를

알아보자.  @RunWith, @Suite  가 있다.

 

@RunWith Junit 에서 어떤 구동 클래스를 사용할 것인지에 대한 설정이다.

그러므로 파라미터는 org.junit.runner.Suite 가 된다.

 

@Suite 는 테스트 하고자 하는 클래스들을 나열한다. 이 클래스들에 있는 @Test

메서드들을 몽땅 실행하게 되는 것이다.

 

1. 이클립스에서 Junit 테스트를 위한 셋팅

 

프로젝트에 셋팅이 되어있으면 모르겠지만 안되어있다면 다음과

같이 에러가 날 것이다. Build Path Junit 가 연결되어있지 않기 때문이다.

 

 

물론 외부 라이브러리 형태로 참조하면 되겠지만 이클립스에 포함되어

있으므로 굳이 그렇게 할 필요가 없다. Build Path 화면으로 간 후에

Add Library 클릭후 Junit 를 추가하자.

 

 

그러면 프로젝트 화면에 아래와 같이 추가 될 것이다.

 

2. 두개의 Junit Test 클래스 만들기

 

테스트용으로 간단하게 두개의 클래스를 만든다. 내용은 문자열 출력으로 한다.

 

(1) 테스트 클래스 1

import org.junit.Test;

public class TestJunit1 {

   String message;
   
   @Test
   public void testSalutationMessage() {
      
      message = "TestJunit1 실행 ";
      System.out.println(message);

   }
}

 

(2) 테스트 클래스 2

import org.junit.Test;

public class TestJunit2 {

   String message;
   
   @Test
   public void testSalutationMessage() {
      
      message = "TestJunit2 실행 ";
      System.out.println(message);

   }
}

 

3. 두 테스트 클래스를 실행하기 위한 Swite 클래스

 

소스는 간단하다. @RunWith 지정과 @Swite.SwiteClasses 에 테스트 클래스들을

집어넣으면 된다. 그리고 Junit Test 를 실행하자.

 

import org.junit.runner.RunWith;
import org.junit.runners.Suite;

@RunWith(Suite.class)
@Suite.SuiteClasses({ TestJunit1.class, TestJunit2.class })
public class JunitTestSuite {
	
	
}

 

4. 실행한 결과

 

실행한 결과는 콘솔에 표시된 것 처럼 첫번째클래스와 두번째 클래스에

포함되어있는 함수들을 실행한 것이다. 이런식으로 여러 개의 개별 클래스들을

만들고 Swite 클래스에 포함시킨후 한번에 실행하면 되는 것이다.

참고로 실행시키고 싶지 않은 함수가 있다면 @Ignore 어노테이션을

함수 상단에 붙이면 된다.

 

 

Posted by 녹두장군