Mapping StepDefinition to feature file

Dahun Yoo·2020년 6월 14일
0

본 내용은 cucumber-jvm을 대상으로 작성되었습니다.

Feature 파일을 정의했다면, 그 다음은 Feature 파일 내부에 선언한 Scenario의 각각 Step을 실제로 구현으로 옮겨주어야합니다.
이때 StepDefinition 파일을 선언해주어야 합니다. (특정한 파일확장자가 아니라, 일반 .java 파일입니다.)

보통의 convetion으로는 {feature}stepDef.java 등으로 선언해주곤 합니다.


키워드에 대한 정의

step에 대한 정의를 작성해줍니다. 해당 featurescenario의 각 step에 해당하는 annotation을 선언해주고, 메소드를 작성한 후 내부에 코드를 구현합니다.
메소드의 이름은, 시나리오의 해당 키워드와 비슷한 형식으로 작성해주면 됩니다. Annotation의 내용으로는 ^로 시작하여 $로 마감해주면 됩니다.

예를 들어, 어떠한 Login.feature라는 Feature 파일에, 아래와 같은 Scenario가 있다고 가정해봅시다.

Scenario: Home page default login
  Given User is on NetBanking landing page
  When User login into application with username and password
  Then Homepage is populated
  And Cards are not displayed

각각 Given, When, Then, And 에 해당하는 메소드 들을, 특정 클래스 내에 선언을 해줍니다.

public class stepDefinition {

    @Given("^User is on NetBanking landing page$")
    public void user_is_on_netbanking_landing() {

    }


    @When("^User login into application with username and passwod$")
    public void userLoginIntoApplicationWithUsernameAndPasswod() {
        
    }

    @Then("^Homepage is populated$")
    public void homepageIsPopulated() {
        
    }

    @And("^Cards are not displayed$")
    public void cardsAreDisplayed() {
    }
}

이렇게 작성해놓으면, Feature 파일과 StepDefinition 파일이 mapping된 것이며 각 Step은 하나의 메소드와 mapping된 것 입니다.
잘 mapping이 되었다면, feature 파일에서 특정 step을 컨트롤 + 클릭을 하면 mapping된 method로 자동 이동될 것 입니다.

근데, 정의해야하는 Step들이 너무 많은 경우에는...?

그럴 땐 그냥 Feature 파일만 완성해놓으시고 실행하시면 됩니다.
그러면 cucumber가 친절하게도 에러를 띄워주면서 예시를 출력해봅니다.

그럼 표시되는 내용을 복붙해서 작성하셔도 됩니다!

profile
QA Engineer

0개의 댓글