행동 기반 개발-SpecFlow

SpecFlow는 오픈 소스 프로젝트입니다. 소스 코드는 GitHub에서 호스팅됩니다. SpecFlow에서 애플리케이션의 기능 (사용 사례, 사용자 스토리)에 대한 승인 기준을 저장하는 데 사용하는 기능 파일은 Gherkin 구문을 사용하여 정의됩니다.

Gherkin 형식은 Cucumber에서 도입했으며 다른 도구에서도 사용됩니다. Gherkin 언어는 GitHub의 프로젝트로 유지됩니다.https://github.com/cucumber/gherkin

기능 요소 및 SpecFlow

기능 요소의 주요 기능은-

  • 기능 요소는 기능 파일에 대한 헤더를 제공합니다. 기능 요소에는 애플리케이션의 해당 기능에 대한 이름과 고급 설명이 포함됩니다.

    • SpecFlow는 기능 이름에서 파생 된 클래스 이름으로 기능 요소에 대한 단위 테스트 클래스를 생성합니다.

    • SpecFlow는 수용 기준을 나타내는 시나리오에서 실행 가능한 단위 테스트를 생성합니다.

  • 기능 파일에는 기능의 승인 테스트를 설명하는 데 사용되는 여러 시나리오가 포함될 수 있습니다.

    • 시나리오에는 이름이 있으며 여러 시나리오 단계로 구성 될 수 있습니다.

    • SpecFlow는 시나리오 이름에서 파생 된 메서드 이름을 사용하여 각 시나리오에 대한 단위 테스트 메서드를 생성합니다.

여러 시나리오 단계

시나리오에는 여러 시나리오 단계가있을 수 있습니다. 수락 테스트를 구성하는 사전 조건, 작업 또는 확인 단계를 정의하는 세 가지 유형의 단계가 있습니다.

  • 다른 유형의 단계는 Given, When 또는 Then 키워드 각각 및 동일한 유형의 후속 단계는 AndBut 키워드.

  • Gherkin 구문은 이러한 세 가지 유형의 단계 조합을 허용하지만 일반적으로 시나리오에는 Given, WhenThen 진술.

  • 시나리오 단계는 텍스트를 사용하여 정의되며 DataTable이라는 추가 테이블 또는 DocString 인수라는 여러 줄 텍스트를 가질 수 있습니다.

  • 시나리오 단계는 응용 프로그램을 자동화하기 위해 사용자 지정 코드를 실행하는 기본 방법입니다.

  • SpecFlow는 각 시나리오 단계에 대해 단위 테스트 메서드 내에서 호출을 생성합니다. 이 호출은 시나리오 단계와 일치하는 단계 정의를 실행하는 SpecFlow 런타임에 의해 수행됩니다.

  • 일치는 런타임에 수행되므로 바인딩이 아직 구현되지 않은 경우에도 생성 된 테스트를 컴파일하고 실행할 수 있습니다.

  • 시나리오 단계에 테이블과 여러 줄 인수를 포함 할 수 있습니다. 이는 단계 정의에서 사용되며 추가 테이블 또는 문자열 인수로 전달됩니다.

태그

태그는 기능 및 시나리오에 할당 할 수있는 마커입니다. 기능에 태그를 할당하는 것은 기능 파일의 모든 시나리오에 태그를 할당하는 것과 같습니다. 앞에 @가 붙은 태그 이름은 태그를 나타냅니다.

  • 단위 테스트 프레임 워크에서 지원하는 경우 SpecFlow는 태그에서 카테고리를 생성합니다.

  • 생성 된 카테고리 이름은 태그 이름과 동일하지만 앞에 @가 없습니다.

  • 이러한 단위 테스트 범주를 사용하여 실행할 테스트를 필터링하고 그룹화 할 수 있습니다. 예를 들어 중요한 테스트에 @important 태그를 지정한 다음 이러한 테스트를 더 자주 실행할 수 있습니다.

배경 요소

배경 언어 요소를 사용하면 기능 파일의 모든 시나리오에 대한 공통 전제 조건을 지정할 수 있습니다.

  • 파일의 백그라운드 부분에는 시나리오의 다른 단계보다 먼저 실행되는 하나 이상의 시나리오 단계가 포함될 수 있습니다.

  • SpecFlow는 시나리오에 대해 생성 된 모든 단위 테스트에서 호출되는 백그라운드 요소에서 메서드를 생성합니다.

시나리오 개요

시나리오 개요를 사용하여 데이터 기반 수락 테스트를 정의 할 수 있습니다. 시나리오 개요는 항상 시나리오 템플릿 사양 (<placeholder> 구문을 사용하는 데이터 자리 표시자가있는 시나리오)과 자리 표시 자에 대한 값을 제공하는 일련의 예제로 구성됩니다.

  • 단위 테스트 프레임 워크에서 지원하는 경우 SpecFlow는 시나리오 개요에서 행 기반 테스트를 생성합니다.

  • 그렇지 않으면 시나리오 개요에 대한 매개 변수화 된 단위 테스트 논리 방법과 각 예제 집합에 대한 개별 단위 테스트 방법을 생성합니다.

  • 더 나은 추적 성을 위해 생성 된 단위 테스트 메서드 이름은 시나리오 개요 제목과 예제의 첫 번째 값 (예제 표의 첫 번째 열)에서 파생됩니다.

  • 따라서 예제 세트의 첫 번째 열로 고유하고 설명적인 매개 변수를 선택하는 것이 좋습니다.

  • Gherkin 구문에서는 모든 예제 열에 시나리오 개요에서 일치하는 자리 표시자가 있어야하므로 테스트 이름을 더 쉽게 읽을 수있는 데 사용되는 예제 집합에 임의의 열을 도입 할 수도 있습니다.

  • SpecFlow는 단계 바인딩을 일치시키기 전에 별도의 단계로 자리 표시 자 대체를 수행합니다.

  • 따라서 단계 바인딩의 구현 및 매개 변수는 직접 시나리오 또는 시나리오 개요를 통해 실행되는지 여부와 무관합니다.

  • 이를 통해 나중에 단계 바인딩을 변경하지 않고 승인 테스트에서 추가 예제를 지정할 수 있습니다.

코멘트

#으로 시작하여 언제 어디서나 기능 파일에 주석 행을 추가 할 수 있습니다. 그러나 사양의 주석은 허용 기준이 잘못 지정되었다는 신호일 수 있으므로주의하십시오. SpecFlow는 주석 행을 무시합니다.