Cucumber는 BDD(Behavior Driven Development) 프레임워크로, 비즈니스 요구사항을 스펙화한 feature
파일과 해당 스펙에 대한 테스트를 자바 코드로 작성하는 것을 지원합니다. Cucumber는 태그를 사용하여 특정 테스트만 실행하거나 제외할 수 있는 유용한 기능을 제공합니다. 이번 글에서는 Java Cucumber에서 태그 기반으로 테스트를 실행하는 방법에 대해 알아보겠습니다.
1. 태그 사용하기
Cucumber에서는 테스트를 실행할 때 각 스펙(feature) 파일이나 특정 테스트 시나리오(scenario)에 태그를 지정할 수 있습니다. 태그는 @
기호를 사용하여 지정하며, 여러 개의 태그를 지정할 수도 있습니다. 예를 들어, 아래와 같은 형식으로 태그를 사용할 수 있습니다.
@smoke
Feature: Login Feature
...
@smoke @sanity
@regression
Scenario: Successful login with valid credentials
...
위의 예시에서는 @smoke
, @sanity
, @regression
등의 태그를 사용하여 각 피처와 시나리오에 태그를 지정하고 있습니다.
2. 특정 태그를 가진 테스트 실행하기
Java Cucumber에서는 @CucumberOptions
어노테이션을 사용하여 태그를 기반으로 테스트를 실행할 수 있습니다. @CucumberOptions
어노테이션에 tags
속성을 설정하여 원하는 태그를 지정할 수 있습니다. 아래 예시를 참고해주세요.
import org.junit.runner.RunWith;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
@RunWith(Cucumber.class)
@CucumberOptions(
features = "src/test/features",
glue = "steps",
tags = "@smoke"
)
public class TestRunner {
// ...
}
위의 예시에서는 tags
속성에 @smoke
라는 태그를 지정하였습니다. 이렇게 설정하면 @smoke
태그를 가진 모든 테스트 시나리오가 실행됩니다.
3. 특정 태그를 가진 테스트 제외하기
Java Cucumber에서는 tags
속성에 ~
기호를 사용하여 특정 태그를 가진 테스트를 제외할 수도 있습니다. 아래 예시를 확인해주세요.
@RunWith(Cucumber.class)
@CucumberOptions(
features = "src/test/features",
glue = "steps",
tags = "@smoke and not @regression"
)
public class TestRunner {
// ...
}
위의 예시에서는 @smoke
태그를 가지면서 @regression
태그를 가지지 않는 테스트 시나리오만 실행됩니다.
4. 여러 개의 태그로 테스트 실행하기
Java Cucumber에서는 tags
속성에 여러 개의 태그를 지정하여 테스트를 실행할 수도 있습니다. 태그는 ,
로 구분하면 됩니다. 아래 예시를 참고해주세요.
@RunWith(Cucumber.class)
@CucumberOptions(
features = "src/test/features",
glue = "steps",
tags = "@smoke, @sanity"
)
public class TestRunner {
// ...
}
위의 예시에서는 @smoke
태그 또는 @sanity
태그를 가지는 테스트 시나리오가 실행됩니다.
결론
Java Cucumber에서 태그를 사용하여 특정 테스트 시나리오를 선택적으로 실행하거나 제외하는 것은 매우 유용한 기능입니다. 태그를 활용하여 테스트 실행을 효과적으로 제어할 수 있습니다. Java Cucumber를 사용하는 개발자라면 태그 기반 테스트 실행을 꼭 익혀두시기를 추천합니다.