spock tutorial testing with spock
실습 스팍 튜토리얼 시리즈 : Spock 프레임 워크 및 Groovy 프로그래밍 언어로 테스트
이 튜토리얼 시리즈는 Spock Framework에 대한 지식을 완전히 풍부하게합니다.
개념을 쉽게 이해할 수 있도록 각 튜토리얼에 간단하고 명확한 예제가 포함되어 있습니다.
무료로 Spock을 배울 준비를하세요 !!
이 시리즈의 모든 Spock 자습서 목록 :
초보자와 숙련 된 전문가를위한이 집중적 인 Spock 교육 시리즈를 통해 Spock을 자세히 알아보십시오.
튜토리얼 # | 링크 |
---|---|
튜토리얼 # 1 | Spock 및 Groovy 소개 |
튜토리얼 # 2 | Spock으로 단위 테스트 작성 |
튜토리얼 # 3 | Spock을 사용한 매개 변수화 된 테스트 |
튜토리얼 # 4 | 스팍 조롱 및 스터 빙 |
튜토리얼 # 5 | Selenium 기능 테스트를 통한 Spock |
튜토리얼 # 6 | 스팍 인터뷰 질문 |
Spock 시리즈의 튜토리얼 개요
Tutorial_Num | 배울 것 |
---|---|
튜토리얼 # 1 | Spock 및 Groovy 소개 이 입문 자습서에서는 Groovy를 기반으로 구축 된 테스트 프레임 워크 인 Spock에 대해 모두 설명합니다. 핵심에서 BDD를 적용하고 프레임 워크를 사용하여 작성된 모든 테스트가 BDD 규칙을 따르도록합니다. |
튜토리얼 # 2 | Spock으로 단위 테스트 작성 이 자습서에서는 간단한 예제와 함께 Spock에서 단위 테스트를 시작하는 데 필요한 모든 세부 정보 / 단계를 살펴 봅니다. |
튜토리얼 # 3 | Spock을 사용한 매개 변수화 된 테스트 이 튜토리얼은 매개 변수화 된 테스트가 무엇인지, 그리고 데이터 기반 테스트를 달성하기 위해 Spock의 내장 기능을 어떻게 활용할 수 있는지 명확하게 설명합니다. |
튜토리얼 # 4 | 스팍 조롱 및 스터 빙 이 Spock 자습서는 광범위한 단위 테스트의 가장 필수적인 구성 요소 중 하나 인 Mocking 및 Stubbing에 대해 자세히 설명합니다. |
튜토리얼 # 5 | Selenium 기능 테스트를 통한 Spock 이 유익한 자습서에서 통합 테스트 (예 : 나머지 서비스) 및 기능 테스트에 Spock을 사용하는 방법을 알아 봅니다. 예를 들어 Spock을 Selenium과 통합합니다. |
튜토리얼 # 6 | 스팍 인터뷰 질문 이 튜토리얼에는 답변과 예제가있는 가장 인기있는 Spock 인터뷰 질문 목록이 포함되어 있습니다. 이러한 질문은 실제로 모든 사람이 첫 번째 시도에서 스팍 인터뷰를 성공적으로 완료하도록 안내합니다. |
학습 내용 :
- Spock은 무엇입니까?
- Spock 및 Groovy 비디오 자습서보기
- Groovy 란 무엇입니까?
- Spock 시작하기
- Spock 사양 분석
- 사양 블록 설명
- 중요한 팁
- 결론
- 추천 도서
Spock은 무엇입니까?
Spock은 Groovy를 기반으로 구축 된 테스트 프레임 워크입니다. 핵심에서 BDD를 적용하고 프레임 워크를 사용하여 작성된 모든 테스트가 BDD 규칙을 따르는 지 확인합니다.
또한 JUnit과 달리 Spock에는 자체 모킹 및 테스트 이중 라이브러리가있을뿐만 아니라 매개 변수화 된 테스트 시나리오를 완벽하게 지원합니다.
이 완전한 패키지 자체로 인해 Spock 사양은 가독성이 뛰어나고 표현력이 뛰어나며 결과적으로 진부한 상용구 코드를 줄이기 위해 의도 한 것보다 더 많은 것을 달성하기 위해 테스트를 수행합니다.
이러한 모든 멋진 기능에도 불구하고 Spock 테스트는 기존 JUnit 테스트 실행기와 Maven 및 Gradle과 같은 기존 명령 줄 / 빌드 도구를 사용하여 실행할 수 있으므로 사용하기 훨씬 더 매력적입니다. 간단히 말해서 Spock은 JUnit의 모든 좋은 기능을 결합합니다. BDD (JBehave 및 오이 )뿐만 아니라 조롱.
다음 섹션에서 이러한 각 기능을 설명하는 몇 가지 예를 살펴 보겠습니다.
Spock 및 Groovy 비디오 자습서보기
Groovy 란 무엇입니까?
Groovy는 Java 플랫폼 용 스크립팅 언어입니다.
Groovy의 주요 기능 중 일부는 다음과 같습니다.
#1) 동적 유형 (변수가 모든 유형의 데이터를 보유 할 수 있음)과 정적으로 유형 (데이터 보유 변수에 대해 강력한 유형의 구성을 적용)으로 사용할 수 있습니다.
예 : 우리는 배열과 맵을 같은 방식으로 할당했고 내부적으로 그루비가 유형을 결정하고 적절하게 처리합니다.
def listType = (1,2,3) def mapType = ('red':2,'green':3) println(listType.getClass()) println(mapType.getClass())
위 코드 샘플의 출력은 다음과 같습니다.
수업 java.util.ArrayList
수업 java.util.LinkedHashMap
#두) 유효한 모든 Java 코드는 유효한 Groovy 코드이기도합니다 (그러나 추가 기능도 있기 때문에 그 반대는 아닙니다).
#삼) 다른 기능으로는 메타 프로그래밍, 클로저, 정적 유형 검사 등이 있습니다.
# 4) 같지 않은 자바 세미콜론은 groovy에서 선택 사항이며 기본 유형은 기본적으로 객체로 간주됩니다.
이 튜토리얼 시리즈는 Spock에 더 중점을두기 때문에 Spock 기반 테스트 사양을 작성하는 데 필수적인 Groovy 기능을 배우겠습니다.
Spock 시작하기
시작하려면 사용중인 빌드 시스템 (예 : Gradle / maven)에 따라 어떤 라이브러리가 필요한지 살펴 보겠습니다.
Maven 기반 프로젝트의 경우
Maven 프로젝트에는 Gradle 코드를 컴파일하기위한 플러그인과 그루비 기반 사양을 실행하기위한 확실한 플러그인이 포함되어야합니다. 이 그루비 앤 스팍 외에도 종속성 또한 추가되어야합니다.
org.codehaus.gmavenplus gmavenplus-plugin 1.5 testCompile maven-surefire-plugin 2.18.1 false **/*Spec.java org.spockframework spock-core 1.3-groovy-2.5 test
Gradle 기반 프로젝트의 경우
아래와 같은 샘플 gradle 파일의 경우 가장 중요한 요구 사항에는 gradle 플러그인과 코드 및 테스트 용 groovy에 대한 종속성이 포함됩니다.
plugins { id 'java' id 'groovy' } repositories { mavenCentral() } dependencies { compile 'org.codehaus.groovy:groovy-all:2.4.8' testCompile 'org.spockframework:spock-core:1.1-groovy-2.4' }
Spock 사양 분석
Spock 테스트는 JVM에서 실행되는 모든 언어에 대해 작성할 수 있습니다. 즉, 애플리케이션 코드가 Java, Scala 또는 Kotlin 등으로되어 있어도 Spock에서 단위 / 통합 테스트를 작성하도록 선택할 수 있습니다 (JUnit, JBehave 등).
Spock 테스트 클래스는 'Specifications'(BDD 세계의 Specs와 유사)라고하며 Spock 프레임 워크의 'Specification'클래스를 확장 할 수 있습니다. (사양은 Spock 프레임 워크의 기본 클래스입니다.)
각 Spec 파일은 여러 테스트 (JUnit 테스트 클래스 파일과 유사)를 포함 할 수 있으며 각 테스트는 BDD 블록을 선택적으로 포함 할 수 있습니다. 이는 다른 BDD 프레임 워크와 유사하며, 각 섹션은 각각 JUnit 테스트의 Arrange, Act 및 Assert 섹션과 상호 연관 될 수 있습니다.
아래는 사양 및 테스트의 계층 구조를 나타내는 블록 다이어그램입니다.
코드에서 샘플 사양이 어떻게 보이는지 살펴 보겠습니다.
import spock.lang.Specification class SampleSpec extends Specification { def 'check case-insensitive equality of 2 strings'() { given: String str1 = 'hello' String str2 = 'HELLO' when: str1 = str1.toLowerCase() str2 = str2.toLowerCase() then: str1 == str2 } def 'check addition of 2 numbers'() { given: int input1 = 10 int input2 = 25 when: int result = input1 + input2 then: result == 35 } }
여기서 주목해야 할 몇 가지 중요한 사항 :
#1) 테스트 시나리오의 이름 (def 키워드 뒤의 문자열)을보십시오 :“두 문자열의 대소 문자를 구분하지 않는 동등성 확인”. 이것들은 평범한 영어 문자열이며 이것은 테스트 이름을 매우 읽기 쉽게 만들고 그것이 무엇을 달성하는지 테스트하는 진정한 의미를 제공합니다.
테스트 이름이 c와 같은 일반적인 JUnit 테스트와 비교하십시오.
caseEquality_withValidInput_shouldBeEqual()
#두) 주어진, when 및 then 블록은 Arrange, Act 및 Assert와 동일합니다. 이 중에서 동등성 주장을 암시하고 주장과 관련된 모든 상용구 코드를 피하는 then (또는 assert 블록)을 살펴보십시오.
예 , JUnit의 어설 션은 아래와 같이 보일 것입니다.
@Test public void compareStrings_withValidInput_shouldReturnSuccess() { // Arrange String str1 = 'hello'; String str2 = 'HELLO'; // Act str1 = str1.toLowerCase(); str2 = str2.toLowerCase(); // Assert Assert.assertEquals(str1,str2); }
위에서 볼 수 있듯이 Spock 테스트는 테스트를 덜 장황하게 보이게 할뿐만 아니라 어설 션 (및 설정 등)의 모든 상용구 코드를 피합니다.
사양 블록 설명
테스트의 각 개별 블록에 대해 블록 설명을 문자열로 제공하도록 선택하여 실행중인 블록에 대한 자세한 정보를 제공 할 수 있습니다. 이는 테스트에보다 자세한 구조를 제공하는 데 유용합니다.
아래 예를 보겠습니다.
def 'check case-insensitive equality of 2 strings'() { given: 'two input strings' String str1 = 'hello' String str2 = 'HELLO' when: 'strings are lowercased' str1 = str1.toLowerCase() str2 = str2.toLowerCase() then: 'equal strings should return success' str1 == str2 }
중요한 팁
#1) Spock 기반 사양의 모든 블록은 선택 사항입니다. 그러나 '언제'와 'then'이있는 경우 순서대로 함께 표시되어야합니다.
#두) 어설 션의 유효성을 검사해야하고 when 블록이 필요하지 않은 경우 ' 배고 있다 ' 블록. 이는 언제부터 차단되기 전에 사전 조건을 주장하는 데 사용할 수 있습니다 (테스트에서 여러 번 사용할 수 있음).
'when'블록을 실행하기 전에 전제 조건의 유효성을 검사하는 것과 같은 expect의 샘플 사용을 살펴 보겠습니다.
def 'check addition of 2 numbers'() { given: int input1 = 10 int input2 = 25 expect: input1.getClass().toString() == 'class java.lang.Integer' input2.getClass().toString() == 'class java.lang.Integer' input1 = Integer.MIN_VALUE when: int result = input1 + input2 then: result == 35 }
위와 같이 expect 블록은 입력 필드의 클래스 값과 입력 중 하나의 값이 범위 내에 속하도록하려고합니다.
결론
이 Spock 자습서에서는 Spock 사양의 구조 또는 기본 구성 요소와 함께 Groovy 프로그래밍 언어의 기본 사항을 다뤘습니다.
우리는 그루비 기반 Spock 사양을 작성하기 위해 필요한 종속성이있는 샘플 프로젝트를 만들고 샘플 사양을 작성했습니다.
이 시리즈의 다른 튜토리얼에서는 Spock 프레임 워크가 제공하는 기능에 대해 자세히 살펴보고 그루비 언어를 사용하여 깨끗하고 읽기 쉬운 테스트 사양을 만드는 방법을 알아 봅니다.
상위 10 개 휴대폰 스파이 소프트웨어
Spock의 테스트 픽스처, 어설 션 및보고에 대해 자세히 알아 보려면 곧 출시 될 Spock 자습서를 계속 지켜봐주십시오.