Given-When-Then 패턴

2020. 4. 1. 18:26코드 품질 관리

1. Given-When-Then 패턴이란

 Given-When-Then 패턴은 Test Code 스타일을 표현하는 방식을 말합니다.

Given

 테스트에서 구체화하고자 하는 행동을 시작하기 전에 테스트 상태를 설명하는 부분

When

 구체화하고자 하는 그 행동

Then

 어떤 특정한 행동 때문에 발생할거라고 예상되는 변화에 대한 설명

예시
기능 : 사용자 주식 트레이드

시나리오 : 트레이드가 마감되기 전에 사용자가 판매를 요청

"Given" 나는 MSFT 주식을 100가지고 있다. 
        그리고 나는 APPL 주식을 150가지고 있다. 
        그리고 시간은 트레이드가 종료되기 전이다.

"When"  나는 MSFT 주식 20을 팔도록 요청했다.

"Then"  나는 MSFT 주식 80 가지고 있어야 한다.
        그리고 나는 APPL 주식 150을 가지고 있어야 한다.
        그리고 MSFT 주식 20이 판매 요청이 실행되었어야 한다.

2. Given-When-Then 패턴을 사용한 코드의 예시

Given

 테스트를 위해 준비하는 과정입니다. 테스트에 사용하는 변수, 입력 값 등을 정의하거나, Mock 객체를 정의하는 구문도 Given에 포함됩니다. 참고로 아래 그림을 참고하면 when이라는 메서드도 Given에 포함되었는데 해당 구문은 테스트 준비를 위한 것이기 때문에 Given에 포함되는게 맞다고 생각합니다.

When

 실제로 액션을 하는 테스트를 실행하는 과정입니다. When은 가장 중요한 구문이지만 다른 구문들에 비해 가장 짧습니다.

Then

 마지막은 테스트를 검증하는 과정입니다. 예상한 값, 실제 실행을 통해서 나온 값을 검증합니다.

참조: https://brunch.co.kr/@springboot/292

728x90

'코드 품질 관리' 카테고리의 다른 글

BDD  (0) 2020.04.02
TDD  (0) 2020.04.01
System Test  (0) 2020.03.29
Integration Test  (0) 2020.03.29
Code Coverage  (0) 2020.03.28