Cucumber는 행위 주도 개발(Behavior Driven Development, BDD)을 위한 테스트 도구로, 자바 언어를 기반으로 동작합니다. Cucumber를 사용하여 테스트를 작성할 때, 기본적으로는 테스트 스텝이 순서대로 실행되지만, 때로는 특정한 순서로 테스트를 실행해야 할 때가 있습니다. 이번 글에서는 Java Cucumber에서 테스트 실행 순서를 정하는 방법에 대해 알아보겠습니다.
@RunWith(Cucumber.class) 어노테이션 사용하기
Java Cucumber에서 테스트 실행 순서를 정하는 가장 간단한 방법은 @RunWith(Cucumber.class)
어노테이션을 사용하는 것입니다. @RunWith
어노테이션은 JUnit에서 사용되는 테스트 러너를 지정하는 데에 사용되며, Cucumber 클래스를 지정하여 Cucumber의 기능을 이용할 수 있습니다.
import org.junit.runner.RunWith;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
@RunWith(Cucumber.class)
@CucumberOptions(
features = "src/test/resources/features",
glue = "stepDefinitions",
plugin = {"pretty", "html:target/cucumber-reports"}
)
public class TestRunner {
}
위 코드에서 @RunWith(Cucumber.class)
어노테이션을 사용하여 Cucumber를 JUnit 테스트 러너로 지정하고 있습니다. 이렇게 하면 Cucumber의 어노테이션을 사용하여 테스트를 구성할 수 있게 됩니다.
Cucumber Scenario Outline 사용하기
Cucumber에서는 테스트 케이스를 작성할 때 Scenario Outline
을 사용하여 여러 개의 테스트 스텝을 한 번에 실행할 수 있습니다. Scenario Outline
은 테스트 데이터를 템플릿화하여 여러 번 반복 실행할 수 있도록 합니다.
Feature: Example Feature
Scenario Outline: Example Scenario
Given I have <item> in my inventory
When I sell <item>
Then my inventory should decrease by <quantity>
Examples:
| item | quantity |
| Apple | 2 |
| Orange | 3 |
| Banana | 1 |
위의 예시에서 Examples
키워드 아래에 테스트 데이터를 정의하고 있습니다. Scenario Outline
을 사용하여 템플릿화된 테스트 스텝을 정의하고, Examples
키워드 아래에 여러 개의 테스트 데이터를 작성하여 동일한 테스트 스텝을 여러 번 실행할 수 있습니다.
@Before 및 @After 어노테이션 사용하기
Cucumber에서는 @Before
와 @After
어노테이션을 사용하여 각 테스트 스텝이 실행되기 전과 후에 수행할 작업을 정의할 수 있습니다. 이를 활용하여 각 테스트 스텝을 실행하기 전에 초기화 작업을 수행하거나, 모든 테스트 스텝이 실행된 후에 정리 작업을 수행할 수 있습니다.
import cucumber.api.java.Before;
import cucumber.api.java.After;
public class StepDefinitions {
@Before
public void beforeEachScenario(){
// 각 테스트 스텝 실행 전에 수행할 작업
}
@After
public void afterEachScenario(){
// 각 테스트 스텝 실행 후에 수행할 작업
}
// Step Definitions...
}
위의 예시에서 @Before
어노테이션을 사용하여 beforeEachScenario()
메소드를 정의하고 있습니다. 이 메소드는 각각의 테스트 스텝이 실행되기 전에 호출되어 초기화 작업을 수행합니다. 마찬가지로 @After
어노테이션을 사용하여 afterEachScenario()
메소드를 정의하여 각 테스트 스텝이 실행된 후에 정리 작업을 수행할 수 있습니다.
결론
Java Cucumber에서 테스트 실행 순서를 정하는 방법에 대해 알아보았습니다. @RunWith(Cucumber.class)
어노테이션을 사용하여 Cucumber를 JUnit 테스트 러너로 지정하거나, Scenario Outline
을 사용하여 여러 개의 테스트 스텝을 실행하거나, @Before
와 @After
어노테이션을 사용하여 초기화 및 정리 작업을 수행할 수 있습니다. 이러한 방법들을 조합하여 효율적이고 유지보수가 용이한 테스트 코드를 작성할 수 있습니다.
참고 문서: