×
Crocus
공부한 내용을 정리하는 블로그로 시작한
Crocus는 2014년 1월 14일 부터 시작하여
현재 월 6만명, 총 1,499,763명의 방문자 수를 기록하고 있습니다.
Donation
이제 많은 사용자들이 이용하는 만큼
더 다양한 서비스 개발/제공을 위해 후원금을 모금하고자 합니다.
후원을 해주시는 분들은 Donators 명단에 성명, 후원금을 기입해드리며
Crocus 블로그가 아닌 다른 곳에 정리해둔 저만의 내용을 공유해 드리고자 합니다.
Account
예금주 : 고관우
신한은행 : 110-334-866541
카카오뱅크 : 3333-01-7888060

👉 후원 페이지 바로가기 Donators
익명 : 5000원(Crocus응원합니다.)
busyhuman: 5000원(유용한 지식 감사합니다.)
익명 : 5000원(알고리즘 학습러)

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");
    }
}