Child pages
  • Selenium과 Cucumber를 활용해 웹 테스트 자동화하기 2 - Feature별 실행

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin
Selenium과 Cucumber를 활용해 웹 테스트 자동화하기 1 글이 Selenium과 Cucumber에 대한 개념을 잡고 간단한 테스트를 할 수 있는 참고 자료를 제공했다면 이번 글에서는 실제 프로젝트에 적용하면서 삽질했던 경험을 공유하려고 한다. 적용한지 오래 되지 않았기 때문에 모든 문제를 해결하지는 못했지만 나름 시작할 수 있는 기반은 마련했다고 생각한다.

프로젝트에 테스트를 추가하기 위해 먼저 Feature 파일을 만들고 이에 대한 테스트 소스 코드를 구현했다. 앞 글에서 다른 문서를 참고해 JUnit을 활용해 테스트를 실행하도록 구현했다.

 

Code Block
@RunWith(Cucumber.class)
@Cucumber.Options(format = "html:target/cukes")
public class RunCukesTest {
}

첫번째 Feature는 이슈 없이 잘 동작했다. 예외 케이스도 하나 추가해 봤다.

 

Code Block
Feature: 로그인

Scenario: 사용자 정상 로그인
    Given 로그인 페이지에 접근한다
    When 아이디 : userId, 비밀번호 : password로 로그인한다
    Then 로그아웃이 가능하고 회원정보수정 화면으로 이동할 수 있어야 한다
    
Scenario: 비밀번호 오류
    Given 로그인 페이지에 접근한다
    When 아이디 : userId, 비밀번호 : pass로 로그인한다
    Then 로그인할 수 없어야 한다

정상적으로 동작하는 것을 확인하고 새로운 Feature로 넘어 갔다. 

 

Code Block
Feature: 회원가입

Scenario: 정상적인 회원 가입
     Given 홈페이지에 접근한다
     When 회원가입한다
     Then 회원가입 성공 메시지 및 로그인 상태여야 한다

 

위와 같이 새로운 Feature를 추가하고 RunCukesTest를 실행하는 순간 두 개의 Feature가 동시에 실행되었다. Feature가 두 개 뿐이라면 이슈가 되지 않을 수도 있지만 Feature 수가 늘어날 수록 테스트 한번 하는데 소요되는 시간이 상당히 길어질 것이다. 일반적으로 테스트 코드를 구현할 때 해당 테스트에 대해서만 관심을 가지지 다른 테스트에 대해서는 관심을 가지지 않기 때문에 해당 Feature만 실행할 수 있는 방법을 찾기 시작했다.
이와 관련한 해결책은 Cucumber-jvm IDE support 문서에서 찾을 수 있었다.
이클립스에서 특정 feature를 실행하도록 설정하는 방법은 다음과 같다.
  • 이클립스 >> Run >> Run Configurations >> Java Application >> New launch Configuration(좌측 상단에 + 버튼 있음)
  • Main class에 cucumber.cli.Main 선택

  • Arguments 탭의 Progam arguments에 다음과 같이 설정. glue 속성 값은 프로젝트의 base package를 입력
Code Block
${selected_resource_loc}
--glue net.slipp
--format pretty
--monochrome
  • Arguments 탭의 VM arguments에 "-ea" 설정


위와 같이 설정한 후 실행하고자 하는 feature 파일을 선택 >> 오른쪽 클릭 >> Run As >> Run Configurations ... >> 앞에서 추가한 "Cucumber Main" 선택 >> Run을 실행하면 된다. 성공이다. 각 feature 마다 실행이 잘 된다. 그런데 실행 과정이 너무 복잡하다. 아 짜증 난다. 이렇게 꼭 테스트해야 하나.
몇 번 실행해보다가 때려 치고 싶었다. 그래서 다음 단계로 찾기 시작한 것이 앞에서 추가한 "Cucumber Main"을 단축키로 연결할 수 있는 방법이 있을까하고 찾아봤지만 찾지 못했다. 그렇게 포기하고 다른 이슈 해결하다가 우연히 Ctrl + F11을 누르면 실행되지 않을까라는 생각이 스치면서 실행했다. 기대하지도 않았는데 실행된다.
최종적으로 정리해 보자면 feature 실행하기 위한 Main 클래스를 추가한 후 위 복잡한 과정으로 일단 한번 실행한다. 이후부터는 실행하고자 하는 feature 파일을 선택한 후 Ctrl + F11 단축키를 통해 실행할 수 있다. 일단 한 가지 문제 해결...