반응형

Suite annotation (@Suite)란?

 

JUnit을 통해 여러 테스트를 만들다 보면 각 클래스 네임에 맞는 테스트 들이 들어갈 것이고

그러한 테스트를 만들다 보면 여러 클래스가 한번에 테스트 되기를 바라는 경우도 있다.

 

예를 들어보자.

 

A 클래스는 야구 선수인지 파악하는 테스트를 모아두었고

B 클래스는 축구 선수인지 파악하는 테스트를 모아두었다.

 

이러한 OO 선수인지 파악하는 테스트를 한번에 하고 싶은데 하나하나씩하면 매우 번거로울 것이다.

 

이를 위해 Suite라는 어노테이션을 이용하면 이 테스트를 묶음 단위로 진행 할 수 있다.

 

 

기본 기능은 스위트에 포함된 클래스중 @Test 어노테이션이 들어간 함수를 인식하고 테스트가 이루어진다. 먼저 주요 어노테이션 두개를 알아보자.  

 

@RunWith, @Suite

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

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

 

@Suite 는 테스트 하고자 하는 클래스들을 나열한다. 이 클래스들에 있는 @Test 메서드들을 몽땅 실행하게 되는 것이다.

 

 

예제 코드

Test runner가 Suite를 실행시키면 이때 Suite가 어떤 테스트를 실행할 지 결정해준다.

아래에서는 SoccerPlayerTest, BaseballPlayerTest 순서로 테스트를 해준다.

package com.example.myapplication;

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

import static org.junit.Assert.*;

@RunWith(Suite.class)
@Suite.SuiteClasses({SoccerPlayerTest.class, BaseballPlayerTest.class})
public class SuiteTest {
}

 

테스트 1

package com.example.myapplication;

import org.junit.Test;

public class SoccerPlayerTest {
    @Test
    public void testSoccerPlayer(){
        System.out.println("testSoccerPlayer");
    }
}

 

테스트 2

package com.example.myapplication;

import org.junit.Test;

public class BaseballPlayerTest {
    @Test
    public void testBaseballPlayer(){
        System.out.println("testBaseballPlayer");
    }
}

 

 

 

반응형