본 내용은 cucumber-jvm을 대상으로 작성되었습니다.
자, Feature
파일을 작성하고, 각 Step
에 해당하는 StepDefinition
내부의 메소드를 지정해주었다면, 실행을 해야합니다.
Cucumber의 featrue파일들은 그냥 Build > Run해서는 실행되지 않고, TestRunner
라는 녀석을 만들어서 묶음지어주어야 합니다.
@CucumberOptions(features = "src/test/java/features",
glue = "stepDefinition" )
public class TestRunner extends AbstractTestNGCucumberTests {
}
이렇게 아무것도 없는 빈 class파일을 만들어주시고, @CucumberOptions
라는 Annotation
을 선언해주세요.
Test framework로 Junit
을 사용한다면 아래와 같이 @RunWith
도 추가해주세요. 또한 AbstractTestNGCucumberTests
는 상속받지 않으셔도 됩니다. (TestNG전용.)
@RunWith(Cucumber.class)
@CucumberOptions(
plugin = {"pretty", "HTML: target/cucumber"},
features = "src/test/java/features",
glue = "stepDefinitions"
)
이 @CucumberOption
에는 몇가지 지정해주어야하는 파라미터가 있습니다.
@CucumberOptions(features = "src/test/java/features" , glue = "stepDefinition" )
실행해야하는 feature파일을 지정합니다. 디렉토리만 지정해주면, 해당 디렉토리 내부에 존재하는 모든 feature파일을 실행합니다. 반대로 특정 feature파일만 실행하고자 하면, 파일명.feature
까지 지정해주면 됩니다.
glue
는 StepDefinition 파일을 지정하는 파라미터 입니다. 패스의 지정은 필요 없고, 다만 TestRunner의 패키지와 같은 레벨, 같은 부모 패키지를 가지고 있어야 합니다.
(혹은 TestRunner와 같은 레벨의 디렉토리에 Step Definition파일을 생성해도 무방합니다.)
이외에도...
Cucumber 실행에 필요한 외부 플러그인을 선언합니다. 보통 많이 쓰이는게 pretty
인데요, 이것을 사용하면 콘솔창에 출력되는 테스트결과를 예쁘게 색도 입혀주고 정렬도 해줍니다.
이것을 사용하면 실행하고싶은 Tag가 달린 feature file내의 scenario만 골라골라 실행할 수 있습니다. tag는 여러개를 지정할 수 있습니다.